时间:2010-07-24 13:23:41

标签: xml xsd xml-validation

3 个答案:

答案 0 :(得分:47)

答案 1 :(得分:19)

我讨论的时间有点晚,但我遇到了同样的问题并找到了解决方案:

<xsd:complexType name="questions">
    <xsd:choice maxOccurs="unbounded">
        <xsd:element name="location" type="location"/>
        <xsd:element name="multipleChoiceInput" type="multipleChoiceInput"/>
        <xsd:element name="textInput" type="textInput"/>
        <xsd:element name="pictureInput" type="pictureInput"/>
    </xsd:choice>
</xsd:complexType>

关键是将xs:choice与maxOccurs =“unbounded”结合起来。如果您只使用xs:all,则允许其中一个为句点。

编辑添加: 虽然xs:any会起作用,但它不会将您的选择限制为逐项列出的四个元素。它将允许任何东西,这几乎违背了模式的目的。

答案 2 :(得分:1)

此处的聚会也很晚,但将<xsd:all>minOccursmaxOccurs结合使用会不起作用?:

<xsd:complexType name="questions">
    <xsd:all>
        <xsd:element name="location" type="location" minOccurs="0" maxOccurs="1"/>
        <xsd:element name="multipleChoiceInput" type="multipleChoiceInput" minOccurs="0" maxOccurs="1"/>
        <xsd:element name="textInput" type="textInput" minOccurs="0" maxOccurs="1"/>
        <xsd:element name="pictureInput" type="pictureInput" minOccurs="0" maxOccurs="1"/>
    </xsd:all>
</xsd:complexType>