Xsd XML模式中的组和序列之间的差异?

Xsd XML模式中的组和序列之间的差异?,xsd,Xsd,XML模式和in-XML模式之间的区别是什么?何时使用一个或另一个?xs:sequence-与xs:choice和xs:all一起用于定义目标XML中XML元素的有效序列。例如,此XML的模式: <mainElement> <firstSubElement/> <subElementA/> <subElementB/> </mainElement> 可以为公共子元素定义一个组: <xs:group name="sub

XML模式和in-XML模式之间的区别是什么?何时使用一个或另一个?

xs:sequence
-与
xs:choice
xs:all
一起用于定义目标XML中XML元素的有效序列。例如,此XML的模式:

<mainElement>
  <firstSubElement/>
  <subElementA/>
  <subElementB/>
</mainElement>
可以为公共子元素定义一个组:

<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
基本上是简化模式的语法糖?正确-您可以编写任何可能的模式,而无需使用
group
<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>