В чем разница между 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>