XML Schema中xs:group
和xs:sequence
之间有什么区别?你什么时候使用其中一个?
答案 0 :(得分:27)
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>