У меня следующий код XSD:
<xsd:complexType name="questions">
<xsd:sequence>
<xsd:element name="location" type="location"/>
<xsd:element name="multipleChoiceInput" type="multipleChoiceInput" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="textInput" type="textInput" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="pictureInput" type="pictureInput" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
Проблема здесь: расположение элементов, multipleChoiceInput и т.д. должны появляться в том же порядке, в котором они объявлены. Я не хочу, чтобы это произошло, я хочу, чтобы в процессе проверки последовательность не была релевантной. Как я могу достичь этого?
Другая возможность, которую я пробовал, была:
<xsd:complexType name="questions">
<xsd:choice maxOccurs="unbounded">
<xsd:element name="location" type="location"/>
<xsd:element name="multipleChoiceInput" type="multipleChoiceInput" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="textInput" type="textInput" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="pictureInput" type="pictureInput" minOccurs="0" maxOccurs="1"/>
</xsd:choice>
</xsd:complexType>
В этом примере последовательность действительно не имеет значения, и у меня может быть столько элементов, сколько я хочу (что "все" не позволит мне делать). Но у меня все еще есть проблема с min- и maxOccurs. В этом примере у меня могло бы быть так много "pictureInput" как возможно, что опять-таки ограничение, которое я хотел бы иметь либо 0, либо 1.
Большое спасибо за помощь!