You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@xmlbeans.apache.org by Ophir Bleiberg <op...@personeta.com> on 2006/10/10 09:47:54 UTC

Newbie question: XMLBeans does not order 'sequence' elements according to the schema definitions?!

It appears that the when creating a document through the Java API, the order of the elements in a sequence in the produced document is the order in which 'set' was called, and not the order defined in the schema (that is, we produce an invalid document!).  
This seems like a reasonable bean-based approach, otherwise you need to know the exact schema in order to populate an XML sequence.
Also, it means it's a real pain to modify an existing document by adding an optional element in the middle of a sequence.
Surly the schema provides enough information for the engine to order the sequence elements regardless of the order of calling the 'setter' method.
Are we doing something wrong, or is this just how XMLBeans works?

For example:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="Root">
		<xs:annotation>
			<xs:documentation>Root Element</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="First" type="xs:string">
					<xs:annotation>
						<xs:documentation>First element in sequence</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Second" type="xs:string">
					<xs:annotation>
						<xs:documentation>Second element in sequence</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>

If we call 'setSecond' before 'setFirst' an invalid document is produced.

	Thanks,
               Ophir

    "Beware of the man who works hard to learn something, 
learns it, and finds himself no wiser than before.  He is full of 
murderous resentment of people who are ignorant without having 
come by their ignorance the hard way."


Re: Newbie question: XMLBeans does not order 'sequence' elements according to the schema definitions?!

Posted by "Robert W. Wade" <rw...@yahoo.com>.
I do not believe you are correct, at least with the version of
XMLBeans that I am using. I am using 2.2.0, JKD 1.4.2.

The java class I used is attached. The output is listed below:

<Root>
  <First>first string</First>
  <Second>second string</Second>
</Root>

Process finished with exit code 0

Rob




--- Ophir Bleiberg <op...@personeta.com> wrote:

> It appears that the when creating a document through the Java API,
> the order of the elements in a sequence in the produced document is
> the order in which 'set' was called, and not the order defined in
> the schema (that is, we produce an invalid document!).  
> This seems like a reasonable bean-based approach, otherwise you
> need to know the exact schema in order to populate an XML sequence.
> Also, it means it's a real pain to modify an existing document by
> adding an optional element in the middle of a sequence.
> Surly the schema provides enough information for the engine to
> order the sequence elements regardless of the order of calling the
> 'setter' method.
> Are we doing something wrong, or is this just how XMLBeans works?
> 
> For example:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
> elementFormDefault="qualified" attributeFormDefault="unqualified">
> 	<xs:element name="Root">
> 		<xs:annotation>
> 			<xs:documentation>Root Element</xs:documentation>
> 		</xs:annotation>
> 		<xs:complexType>
> 			<xs:sequence>
> 				<xs:element name="First" type="xs:string">
> 					<xs:annotation>
> 						<xs:documentation>First element in
> sequence</xs:documentation>
> 					</xs:annotation>
> 				</xs:element>
> 				<xs:element name="Second" type="xs:string">
> 					<xs:annotation>
> 						<xs:documentation>Second element in
> sequence</xs:documentation>
> 					</xs:annotation>
> 				</xs:element>
> 			</xs:sequence>
> 		</xs:complexType>
> 	</xs:element>
> </xs:schema>
> 
> If we call 'setSecond' before 'setFirst' an invalid document is
> produced.
> 
> 	Thanks,
>                Ophir
> 
>     "Beware of the man who works hard to learn something, 
> learns it, and finds himself no wiser than before.  He is full of 
> murderous resentment of people who are ignorant without having 
> come by their ignorance the hard way."
> 
> 

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com