XSD选择内部序列

时间:2017-11-16 14:19:58

标签: xml xsd xsd-validation xml-validation

我理解并单独使用xs:choicexs:sequence,但我不明白xs:choice内的xs:sequence是什么意思?

<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>

1 个答案:

答案 0 :(得分:1)

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

是的,您问题中的两个XML文档都对您的XSD有效(如果您删除xs:sequence周围的xs:choice包装,则会继续存在。