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: user@xmlbeans.apache.org
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]

Reply via email to