Skip to Main Content

Database Software

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Validating XML against an XML Schema using PL/SQL

User_resUJan 15 2010 — edited Jan 29 2010
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>
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Feb 26 2010
Added on Jan 15 2010
4 comments
2,873 views