XSD 序列内选择
XSD choice inside sequence
我理解并分别使用xs:choice
和xs: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
包装器,将继续有效.
我理解并分别使用xs:choice
和xs: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
包装器,将继续有效.