子の順序が何の情報も伝えない場合、通常は順序を修正するのが最も簡単です。
<xs:complexType name="fixedOrder">
<xs:sequence>
<xs:element ref="RequiredElementA"/>
<xs:element ref="RequiredElementB"/>
<xs:element ref="RequiredElementC"/>
<xs:element ref="RequiredElementD" minOccurs="0"/>
<xs:element ref="RequiredElementE" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
順序に情報が含まれている場合 (たとえば、A、B、C のユーザーのランク順序を記録し、オプションで D と E を含める場合)、順序を制約なしにすることができます。
<xs:complexType name="variableOrder">
<xs:all>
<xs:element ref="RequiredElementA"/>
<xs:element ref="RequiredElementB"/>
<xs:element ref="RequiredElementC"/>
<xs:element ref="RequiredElementD" minOccurs="0"/>
<xs:element ref="RequiredElementE" minOccurs="0"/>
</xs:all>
</xs:complexType>
情報が伝わらなくても、制約のない秩序を望む人もいます。これにより、データ ソースが所定の順序を検索する必要がなくなりますが、検証がやや複雑になります。