Validating XML against an XML Schema using PL/SQL
Hello everyone,
I've a strange problem.
I'm trying to validate an XMLTYPE variable against an XSD schema using the XMLisValid function.
The XML I was trying to validate was returning false (0) when using this method.
However, when I register the XSD against a column in a table and then insert this XMLTYPE into that column, I do not get any errors. If I change the XSD to ensure failure when using this method, I do get an error, so it is registered and working.
I have then created a very basic XSD and both methods work when validating the XML against this. So obviously the more complicated XSD I want to validate against is making a difference, but I would expect them to either both fail or both pass, not one fail and one pass.
Does anyone know why they'd be returning different results?
Thanks in advance for your help.
Robin
examples of what I'm using:
XML to validate:
<centres>
<add>
<centre>
<centreName>Name 1</centreName>
<centreRef>45678</centreRef>
</centre>
</add>
</centres>
Simple XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="centres" type="centresType"/>
<xs:complexType name="addType">
<xs:sequence>
<xs:element type="xs:string" name="centreName"/>
<xs:element type="xs:short" name="centreRef"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="centresType">
<xs:sequence>
<xs:element type="addType" name="add" maxOccurs="3" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Complicated XSD:
<?xml version="1.0" encoding="utf-8" ?>
<!--Created with Liquid XML Studio - 30 Day Trial Edition 7.1.6.1440 (http://www.liquid-technologies.com)-->
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="centres">
<xs:complexType>
<xs:sequence>
<xs:element name="remove">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1000" name="centreRef">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="add">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1000" name="centre">
<xs:complexType>
<xs:sequence>
<xs:element name="centreName">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="centreRef">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="qualifications">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1000" name="qualRef">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="modifyQualAssociations">
<xs:complexType>
<xs:sequence>
<xs:element name="remove">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1000" name="r">
<xs:complexType>
<xs:attribute name="centreRef" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="qualRef" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="add">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1000" name="a">
<xs:complexType>
<xs:attribute name="centreRef" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="qualRef" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>