Reputation: 1400
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.
Upvotes: 96
Views: 132775
Reputation: 29
when we use <xs:sequence>
under <xs:complexType>
tag, it indicates all the elements that are declared in that complexType MUST appear in same order in XML document. otherwise, you will get an error. for <xs:all>
there is no need to specify elements in proper order.
Upvotes: 0
Reputation: 35960
Difference:
minOccurs
and maxOccurs
attributes.minOccurs
and maxOccurs
attributes.From the W3Schools tutorials here and here.
Upvotes: 24
Reputation: 280
<school>
<firstname>John</firstname>
<lastname>Smith</lastname>
</school>
<xs:element name="school">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Here:
xs:element : Defines an element.
xs:all : Denotes child elements can appear in any order.
xs:sequence : Denotes child elements only appear in the order mentioned.
xs:complexType : Denotes it contains other elements.
xs:simpleType : Denotes they do not contain other elements.
type: string, decimal, integer, boolean, date, time,
With the help of extra attributes, we can perform multiple operations.
Performing any task on xsd is simpler than xml.
Upvotes: 6
Reputation: 4476
<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.
Upvotes: 156
Reputation: 1541
The schema merely defines what constitutes a compliant document.
How non-compliance is reported is entirely up to the validator. There is nothing stopping a validator from reporting exactly which fields are missing, but apparently the one you use does not in this case.
Whether that is a bug or by design you would have to discuss with the provider of the validator.
Upvotes: 7
Reputation: 5496
All Indicator
The
<all>
indicator specifies that the child elements can appear in any order, and that each child element must occur only once:
Sequence Indicator
The
<sequence>
indicator specifies that the child elements must appear in a specific order:
Upvotes: 2