XSD无,一个或两个

时间:2015-06-01 16:43:26

标签: xml xsd

我搜索了一大堆,在发布之前找不到任何类似的问题。我正在创建一个XSD,一个complexType有这些要求:

  • 元素既不能有字段
  • 元素可以包含字段
  • 如果元素具有字段2,则它还必须具有字段1

它基本上适用于“无,一个(但特定的一个),或两者兼而有之”,但我无法弄清楚我做错了什么,任何帮助都会受到赞赏

<xs:complexType name="Foo">
    <xs:choice minOccurs="0">
        <xs:sequence>
            <xs:element name="fieldOne" maxOccurs="1"/>
        </xs:sequence>
        <xs:sequence>
            <xs:element name="fieldOne" maxOccurs="1"/>
            <xs:element name="fieldTwo" maxOccurs="1"/>             
        </xs:sequence>
    </xs:choice>
</xs:complexType>

1 个答案:

答案 0 :(得分:2)

您可以使用可选序列执行此操作:

<xs:complexType name="Foo">
    <xs:sequence minOccurs="0">
        <xs:element name="fieldOne"/>
        <xs:element name="fieldTwo" minOccurs="0"/>
    </xs:sequence>
</xs:complexType>

fieldTwo出现的唯一方法是让序列出现一次,在这种情况下也需要fieldOne