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

How to allow one element or another choice of elements in XSD?

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

一些例子:

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

另一个例子:

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

另一个:

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

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

我正在尝试在 XML 架构中执行此操作。我尝试了 groups 和 complexContent 但没有成功。有什么想法吗?

使用复合 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 元素的无限组合组成。