Elementos não ordenados em XSD com elementos obrigatórios e ilimitados?
Eu tenho o seguinte elemento no meu XSD:
<xs:element name="documents" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="invoice" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="report" minOccurs="0" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="additional" minOccurs="0" maxOccurs="unbounded">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
Você pode ver que os documentos devem sempre ter uma fatura e, opcionalmente, pode ter um único relatório e zero ou mais adicionais.
O problema é que esses elementos podem ter uma ordem de aparência diferente, então não posso usar umsequence
não mais. Eu tentei usarall
mas então o problema é o elemento adicional, pois ele possuimaxOccurs="unbounded"
.
Como posso ter uma lista não ordenada de elementos com um desses elementos sempre sendo exigidos e outro com ocorrências ilimitadas?