在XSD中,我有一个从基本SaleType扩展的ReturnType。我不关心元素在xml中出现的顺序。
我可以更改XSD,但我无法改变xml的写入方式。由于某种原因,写入xml的方式不是按照XSD中定义的顺序。我可以在基本类型中但在扩展名中使顺序无关紧要。我该如何解决这个问题?
<xs:complexType name="SaleType">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded"> <!--adding this ignores the order for Sale but does not enforce it to the extensions-->
<xs:element name="ItemID" type="xs:string" />
xs:element name="Description" type="xs:string" minOccurs="0"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ReturnType">
<xs:complexContent>
<xs:extension base="SaleType">
<xs:sequence>
<xs:element name="Reason" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--Even though Description appears before ItemID, this xml validates since Reason is at the end-->
<Return>
<Description>Item 123</Description>
<ItemID>123</ItemID>
<Reason>R1</Reason>
</Return>
<!--This xml does not validate since Reason is at the beginning-->
<Return>
<Reason></Reason>
<Description>Item 123</Description>
<ItemID>123</ItemID>
</Return>