В чем разница между xs:group
и xs:sequence
в XML-схеме? Когда вы будете использовать один или другой?
Разница между группой и последовательностью в XML-схеме?
Ответ 1
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>