Orville,
XMLBeans uses the schema.
In your schema, the type of the LevelOne element is defined as a
sequence.
In a sequence, the order of the elements matter. XMLBeans is working
correctly. If you don't want the order to matter, you should rewrite
your schema, e.g.,
<xs:element name="LevelOne">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="LevelOneA"/>
<xs:element ref="LevelOneB"/>
<xs:element ref="LevelOneC"/>
</xs:sequence>
<xs:attribute name="SOne" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
- Wing Yew
-----Original Message-----
From: Orville Pike [mailto:[EMAIL PROTECTED]
Sent: Thursday, March 29, 2007 10:53 AM
To: [email protected]
Subject: Ordering Issues with XMLBeans
Hi All,
I ran into this issue a while back but just figured out the cause. I'm
using XMLBeans 2.2.0 with JDK 1.5. The issue is that XMLBeans if your
xml
document does not have elements in the same order as they are listed in
the
XSD, then XMLBeans is unable to parse the document at runtime.
Below are a dtd,xsd showing the problem. Has anyone else ran into this
problem and what was your solution. In the sample XML you'll notice all
the
LevelOne elements are the same except the 1st which basically has
LevelOneC
as the 1st child instead of LevelOneA. XMLBeans will show the following
error when parsing the document as it is now, however if you remove or
change the order in the
First LevelOne element it works fine.
The error that's reported:
Expected element 'LevelOneC' instead of 'LevelOneA' here in element
LevelOne
Location of invalid XML: <LevelOneA
SOneA="SONEA_VALUE">LevelOneA_DATA</LevelOneA>
DTD:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Enter you external DTD here -->
<!ELEMENT TestDoc (LevelOne+)>
<!ELEMENT LevelOne (LevelOneA*,LevelOneB*,LevelOneC*)>
<!ATTLIST LevelOne
SOne CDATA #REQUIRED>
<!ELEMENT LevelOneA (#PCDATA)>
<!ATTLIST LevelOneA
SOneA CDATA #REQUIRED>
<!ELEMENT LevelOneB (#PCDATA)>
<!ATTLIST LevelOneB
SOneB CDATA #REQUIRED>
<!ELEMENT LevelOneC (#PCDATA)>
<!ATTLIST LevelOneC
SOneC CDATA #REQUIRED>
XSD:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:wmh="http://www.wmhelp.com/2003/eGenerator"
elementFormDefault="qualified" >
<xs:element name="TestDoc">
<xs:annotation>
<xs:documentation> Enter you external DTD here </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="LevelOne" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="LevelOne">
<xs:complexType>
<xs:sequence>
<xs:element ref="LevelOneA" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="LevelOneB" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="LevelOneC" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="SOne" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="LevelOneA">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="SOneA" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="LevelOneB">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="SOneB" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="LevelOneC">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="SOneC" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
Sample XML:
<?xml version="1.0" encoding="utf-8"?>
<TestDoc>
<LevelOne SOne="SONE_VALUE">
<LevelOneC SOneC="SONEC_VALUE">LevelOneC_DATA</LevelOneC>
<LevelOneC SOneC="SONEC_VALUE">LevelOneC_DATA</LevelOneC>
<LevelOneC SOneC="SONEC_VALUE">LevelOneC_DATA</LevelOneC>
<LevelOneA SOneA="SONEA_VALUE">LevelOneA_DATA</LevelOneA>
<LevelOneA SOneA="SONEA_VALUE">LevelOneA_DATA</LevelOneA>
<LevelOneA SOneA="SONEA_VALUE">LevelOneA_DATA</LevelOneA>
<LevelOneB SOneB="SONEB_VALUE">LevelOneB_DATA</LevelOneB>
<LevelOneB SOneB="SONEB_VALUE">LevelOneB_DATA</LevelOneB>
<LevelOneB SOneB="SONEB_VALUE">LevelOneB_DATA</LevelOneB>
</LevelOne>
<LevelOne SOne="SONE_VALUE">
<LevelOneA SOneA="SONEA_VALUE">LevelOneA_DATA</LevelOneA>
<LevelOneA SOneA="SONEA_VALUE">LevelOneA_DATA</LevelOneA>
<LevelOneA SOneA="SONEA_VALUE">LevelOneA_DATA</LevelOneA>
<LevelOneB SOneB="SONEB_VALUE">LevelOneB_DATA</LevelOneB>
<LevelOneB SOneB="SONEB_VALUE">LevelOneB_DATA</LevelOneB>
<LevelOneB SOneB="SONEB_VALUE">LevelOneB_DATA</LevelOneB>
<LevelOneC SOneC="SONEC_VALUE">LevelOneC_DATA</LevelOneC>
<LevelOneC SOneC="SONEC_VALUE">LevelOneC_DATA</LevelOneC>
<LevelOneC SOneC="SONEC_VALUE">LevelOneC_DATA</LevelOneC>
</LevelOne>
<LevelOne SOne="SONE_VALUE">
<LevelOneA SOneA="SONEA_VALUE">LevelOneA_DATA</LevelOneA>
<LevelOneA SOneA="SONEA_VALUE">LevelOneA_DATA</LevelOneA>
<LevelOneA SOneA="SONEA_VALUE">LevelOneA_DATA</LevelOneA>
<LevelOneB SOneB="SONEB_VALUE">LevelOneB_DATA</LevelOneB>
<LevelOneB SOneB="SONEB_VALUE">LevelOneB_DATA</LevelOneB>
<LevelOneB SOneB="SONEB_VALUE">LevelOneB_DATA</LevelOneB>
<LevelOneC SOneC="SONEC_VALUE">LevelOneC_DATA</LevelOneC>
<LevelOneC SOneC="SONEC_VALUE">LevelOneC_DATA</LevelOneC>
<LevelOneC SOneC="SONEC_VALUE">LevelOneC_DATA</LevelOneC>
</LevelOne>
</TestDoc>
Thanks for any help/insight anyone can provide.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
Notice: This email message, together with any attachments, may contain
information of BEA Systems, Inc., its subsidiaries and affiliated
entities, that may be confidential, proprietary, copyrighted and/or legally
privileged, and is intended solely for the use of the individual or entity
named in this message. If you are not the intended recipient, and have received
this message in error, please immediately return this by email and then delete
it.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]