如何在XSD中允许一个元素或另一个元素选择?

时间:2016-11-04 01:40:53

标签: xml xsd xsd-validation xml-validation

假设我有一个<scene>元素,它可以包含以下元素:

  • <episode>和/或<season>
  • <part>

一些例子:

<scene>
  <part></part>
</scene>

另一个例子:

<scene>
 <episode></episode>
 <episode></episode>
 <season></season>
 </scene>

另一个:

<scene>
 <episode></episode>
 <season></season>
 <episode></episode>
 </scene>

因此,这里的想法是允许episodes中的seasons<scene>(具有无限制的限制)。如果这两个元素(季节和剧集)不存在,您可以在<part>内使用<scene>元素,并且无限制。

我正在尝试在XML Schema中执行此操作。我尝试了群组和complexContent没有成功。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

使用复合xs:choice元素:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="scene">
    <xs:complexType>
      <xs:choice>
        <xs:element name="part" maxOccurs="unbounded"/>
        <xs:choice maxOccurs="unbounded">
          <xs:element name="episode"/>
          <xs:element name="season"/>
        </xs:choice>
      </xs:choice>
    </xs:complexType>
  </xs:element>

</xs:schema>

这表示scene可以包含无限数量的part元素,也可以包含episodeseason元素的无限混合。