在XML Schema中,
xs:group
和xs:sequence
有什么区别?何时使用其中之一?xs:sequence
- 与xs:choice
和xs:all
一起使用,用于定义目标XML中的XML元素的有效序列。例如,此XML的模式:
<mainElement>
<firstSubElement/>
<subElementA/>
<subElementB/>
</mainElement>
类似以下内容:
<xs:element name='mainElement'>
<xs:complexType>
<xs:sequence>
<xs:element name="firstSubElement"/>
<xs:element name="subElementA"/>
<xs:element name="subElementB"/>
</xs:sequence>
</xs:complexType>
</xs:element>
xs:group
用于定义一组命名的 XML 元素,遵循一定的规则,然后可以在模式的不同部分中引用。例如,如果 XML 如下:
<root>
<mainElementA>
<firstSubElement/>
<subElementA/>
<subElementB/>
</mainElementA>
<mainElementB>
<otherSubElement/>
<subElementA/>
<subElementB/>
</mainElementB>
</root>
您可以为共同的子元素定义一个组:
<xs:group name="subElements">
<xs:sequence>
<xs:element name="subElementA"/>
<xs:element name="subElementB"/>
</xs:sequence>
</xs:group>
然后使用它:
<xs:element name="mainElementA">
<xs:complexType>
<xs:sequence>
<xs:element name="firstSubElement"/>
<xs:group ref="subElements"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="mainElementB">
<xs:complexType>
<xs:sequence>
<xs:element name="otherSubElement"/>
<xs:group ref="subElements"/>
</xs:sequence>
</xs:complexType>
</xs:element>
xs:sequence
表示目标XML中的结构,那么xs:group
基本上是一种语法糖,用于简化模式? - sourcenouveau