Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between <xsd:all> and <xsd:sequence> in schema definition?

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.

like image 415
user1679378 Avatar asked Apr 19 '13 09:04

user1679378


People also ask

What is all in XSD?

<xsd:all> ElementAllows the elements in the group to appear (or not appear) in any order in the containing element.

What is an XML sequence?

<xs:element name="country" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>

Which schema type allows to specify elements in any order?

xs:all specifies that the child elements can appear in any order.


1 Answers

<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.

like image 141
Madhusudan Joshi Avatar answered Sep 22 '22 15:09

Madhusudan Joshi