XSD - 元素的存在取决于其他元素的存在

时间:2016-08-22 08:17:01

标签: xml xsd

我在父元素中有三个可能的元素:

<parent>
    <a>...</a>
    <b>...</b>
    <c>...</c>
</parent>

parent内,仅当元素b存在时才允许元素a。此外,仅当元素c(因此也是b)存在时,才允许使用元素a。换句话说,允许以下配置:

<parent>
    <a>...</a>
    <b>...</b>
    <c>...</c>
</parent>

<parent>
    <a>...</a>
    <b>...</b>
</parent>

<parent>
    <a>...</a>
</parent>

以下配置无效:

<parent>
    <b>...</b>
</parent>

<parent>
    <c>...</c>
</parent>

<parent>
    <b>...</b>
    <c>...</c>
</parent>

此约束是否可在XSD中表达?

1 个答案:

答案 0 :(得分:1)

当然,语法是

( a, (b, (c)?)?)

转换为

<xs:sequence>
  <xs:element name="a"/>
  <xs:sequence minOccurs="0">
    <xs:element name="b"/>
    <xs:element name="c" minOccurs="0"/>
  </xs:sequence>
</xs:sequence>