I am using xsd:all
in a complex type. When I miss any mandatory elements while validating it will show all the elements. It will not display the exact missed element.
But if I am use xsd:sequence
I can get the exact missed element.
Is there any difference between these two?
xsd:sequence
: XML element must be in same order.
But xsd:all
: XML element may be any order.
<xsd:all> ElementAllows the elements in the group to appear (or not appear) in any order in the containing element.
<xs:element name="country" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
xs:all specifies that the child elements can appear in any order.
<xsd:all>
specifies that the child elements can appear in any order.
<xsd:sequence>
specifies child elements can only appear in the order mentioned.
Example for Sequence:
<xs:element name="compElement"> <xs:complexType> <xs:sequence> <xs:element name="ele1" type="xs:string"/> <xs:element name="ele2" type="xs:string"/> <xs:element name="ele3" type="xs:string"/> <xs:element name="ele4" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
If you create an XML from this xsd then, it will look something like this:
<compElement> <ele1>First</ele1> <ele2>Second</ele2> <ele3>Third</ele3> <ele4>Fourth</ele4> </compElement>
Example for all:
<xs:element name="compElement"> <xs:complexType> <xs:all> <xs:element name="ele1" type="xs:string"/> <xs:element name="ele2" type="xs:string"/> <xs:element name="ele3" type="xs:string"/> <xs:element name="ele4" type="xs:string"/> </xs:all> </xs:complexType> </xs:element>
If you create an XML file from this xsd then it could look something like this:
<compElement> <ele2>Second</ele2> <ele1>First</ele1> <ele4>Fourth</ele4> <ele3>Third</ele3> </compElement>
More info on xsd:all
More Info on xsd:sequence
Hope I answered your question.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With