Why do this xml not validate in oxygen ?

Questions about XML that are not covered by the other forums should go here.
Albert
Posts: 6
Joined: Tue Feb 20, 2007 10:52 am

Why do this xml not validate in oxygen ?

Post by Albert »

Here is my example of xml and example of xsd.
Why is it not validating in oxygen ?

<?xml version="1.0" encoding="UTF-8"?>
<Envelope
xsi:schemaLocation="http://www.rsvz-inasti.fgov.be/schemas/ ... es/Mailbox Mailbox.xsd"
xmlns="http://www.rsvz-inasti.fgov.be/schemas/ ... es/Mailbox"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<Header Version="2.0">
<Origin>2000</Origin>
<Destination>003X</Destination>
</Header>
<Body>
<Mailbox>
<MailboxNbr>000000000000125</MailboxNbr>
<MessageCount>000000000000010</MessageCount>
<CreationDate>2007-02-08</CreationDate>
<CreationTime>16:02:06</CreationTime>
<Message>
<MessageHeader Version="1.0">
<DocumentID>ST2B</DocumentID>
</MessageHeader>
<MessageBody>
<a:NISSE xmlns:a="a"
xsi:schemaLocation="a transport.xsd"
><A>1</A>
</a:NISSE>
</MessageBody>
</Message>
</Mailbox>
</Body>
</Envelope>

transport.xsd :

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="a" elementFormDefault="qualified"
attributeFormDefault="unqualified" >
<xs:element name="NISSE">
<xs:complexType>
<xs:sequence>
<xs:element name="A" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Albert
Posts: 6
Joined: Tue Feb 20, 2007 10:52 am

you also need this xsd

Post by Albert »

mailbox.xsd

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- edited with XMLSpy v2006 sp2 U (http://www.altova.com) by Ardatis N.V. (Ardatis N.V.) -->
<!--W3C Schema generated by XMLSpy v2005 rel. 3 U (http://www.altova.com)-->
<xs:schema
xmlns="http://www.rsvz-inasti.fgov.be/schemas/ ... es/Mailbox"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.rsvz-inasti.fgov.be/schemas/ ... es/Mailbox"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="2.0">
<xs:element name="Body">
<xs:complexType>
<xs:sequence>
<xs:element ref="Mailbox"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CreationDate" type="xs:date"/>
<xs:element name="Destination">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="4"/>
<xs:minLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Message">
<xs:complexType>
<xs:sequence>
<xs:element name="MessageHeader">
<xs:complexType>
<xs:sequence>
<xs:element ref="DocumentID"/>
</xs:sequence>
<xs:attribute name="Version" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="MessageBody" type="xs:anyType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Header">
<xs:complexType>
<xs:sequence>
<xs:element ref="Origin"/>
<xs:element ref="Destination"/>
</xs:sequence>
<xs:attribute name="Version" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Mailbox">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element ref="MailboxNbr"/>
<xs:element ref="MessageCount"/>
<xs:element ref="CreationDate"/>
<xs:element ref="CreationTime"/>
<xs:element ref="Message" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Envelope">
<xs:annotation>
<xs:documentation>Mailbox voor xml berichten</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="Header"/>
<xs:element ref="Body"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="MailboxNbr" type="xs:positiveInteger"/>
<xs:element name="MessageCount" type="xs:positiveInteger"/>
<xs:element name="Origin">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="4"/>
<xs:minLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="CreationTime" type="xs:time"/>
<xs:element name="DocumentID">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="4"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>
sorin_ristache
Posts: 4141
Joined: Fri Mar 28, 2003 2:12 pm

Post by sorin_ristache »

Hello,

It is not valid because element A must be from namespace a. You can make the document valid by replacing

Code: Select all

<a:NISSE xmlns:a="a"
xsi:schemaLocation="a transport.xsd"
><A>1</A>
</a:NISSE>
with

Code: Select all

<a:NISSE xmlns:a="a"
xsi:schemaLocation="a transport.xsd"
><a:A>1</a:A>
</a:NISSE>
Regards,
Sorin
Albert
Posts: 6
Joined: Tue Feb 20, 2007 10:52 am

Post by Albert »

But is this necessary ? Isn't that the reason why i could use elementFormDefault="qualified"
attributeFormDefault="unqualified" to avoid using prefixes in child eements ?
sorin_ristache
Posts: 4141
Joined: Fri Mar 28, 2003 2:12 pm

Post by sorin_ristache »

If you use elementFormDefault="qualified" element A is in namespace "a". If you do not want that element A is in namespace "a" you must use elementFormDefault="unqualified".


Regards,
Sorin
Post Reply