I have such xsd. These all fields can exist or not and in unpredictable order.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="request">
<xs:complexType>
<xs:all minOccurs="0">
<xs:element ref="field1"/>
<xs:element ref="field2"/>
<xs:element ref="field3"/>
<xs:element ref="field4"/>
<xs:element ref="field5"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>
field4 doesn't exist in xml and validator says that he is waiting for field4, but he shouldn't say this. So what is wrong?
w3cschools.com says
<xs:element name="person">
<xs:complexType>
<xs:all minOccurs="0">
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:all>
</xs:complexType>
</xs:element>
The example above indicates that the "firstname" and the "lastname" elements can appear in any order and each element CAN appear zero or one time!
You need to put the minOccurs
on the individual elements, not the <xs:all>
, i.e.
<xs:all>
<xs:element ref="field1" minOccurs="0"/>
<xs:element ref="field2" minOccurs="0"/>
<xs:element ref="field3" minOccurs="0"/>
<xs:element ref="field4" minOccurs="0"/>
<xs:element ref="field5" minOccurs="0"/>
</xs:all>
Putting minOccurs="0"
on the <xs:all>
is saying that entire group may be omitted, not individual elements.
See XML Schema docs.
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