XSD 序列内​​选择

XSD choice inside sequence

我理解并分别使用xs:choicexs:sequence,但我不明白xs:sequence中的xs:choice是什么意思?

<xs:element name="sports-content">
  <xs:complexType>
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="sports-metadata" />
        <xs:element name="sports-event" />
        <xs:element name="tournament" />
        <xs:element name="schedule" />
      </xs:choice>
    </xs:sequence>
  </xs:complexType>
</xs:element>

好的。这个XML会有效。

<sports-content>
  <sports-metadata />
  <tournament />
</sports-content>

这个XML有效吗?

<sports-content>
  <sports-metadata />
  <tournament />
  <sports-metadata />
</sports-content>

您的 XSD 中的 xs:sequence 元素是多余的;它可以被删除而不影响任何 XML 文档的有效性。 xs:choice 周围的 xs:sequence 会很有用,例如,如果您希望选择始终按顺序在一个或多个元素之前或之后。

是的,您问题中的两个 XML 文件都对您的 XSD 有效(并且如果您删除 xs:choice 周围的 xs:sequence 包装器,将继续有效.