订单指标与元素的发生指标

时间:2011-10-06 11:03:07

标签: xml xsd

之间有什么区别
<xs:element name="root">
    <xs:complexType>
       <xs:sequence maxOccurs="unbounded">
           <xs:element name="child"/>
       </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:element name="root">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="child" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

在第一个示例中,事件指示符应用于xs:sequence,第二次应用于xs:element

1 个答案:

答案 0 :(得分:2)

在您的特定情况下,没有区别,但请考虑序列包含多个元素时的情况:

<xs:element name="root">
    <xs:complexType>
        <xs:sequence maxOccurs="unbounded">
            <xs:element name="child1"/>
            <xs:element name="child2"/>
            <xs:element name="child3"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

与之相比:

<xs:element name="root">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="child1" maxOccurs="unbounded"/>
            <xs:element name="child2" maxOccurs="unbounded"/>
            <xs:element name="child3" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

第一个匹配child1child2child3的任意数量的序列:

<root>
    <child1/><child2/><child3/>
    <child1/><child2/><child3/>
    <child1/><child2/><child3/>
    …
</root>

,第二个匹配单个序列,该序列可以包含一个或多个child1元素,后跟一个或多个child2元素,后跟一个或多个child3元素:

<root>
    <child1/><child1/><child1/><child1/>
    <child2/><child2/>
    <child3/>
</root>

您的模式具有相同的效果,因为包含重复的单个元素的序列与包含单个元素的重复序列相同。通常,重复的序列和重复的元素会导致不同的内容模型。