我有以下 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 的约束条件。
非常感谢您的帮助!