在序列而不是元素级别使用min/maxOccurs时有任何差异

tom*_*ern 10 xsd

我的意思是有任何情况:

<xs:element name="MyType1">
    <xs:complexType>
        <xs:sequence>
            <xs:element maxOccurs="unbounded" name="MyType2">...</xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)

对此有不同的含义:

<xs:element name="MyType1">
    <xs:complexType>
        <xs:sequence maxOccurs="unbounded">
            <xs:element name="MyType2">...</xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)

提前致谢

jas*_*sso 16

一般而言,对元素组(序列或选择)的出现约束(minOccurs或maxOccurs)意味着可以重复整个组,而对元素的出现约束意味着可以在组中的下一个元素出现之前重复该元素.

如果序列只包含一个元素,则没有区别.

<xs:sequence>
    <xs:element maxOccurs="unbounded" name="MyType2">...</xs:element>
</xs:sequence>
Run Code Online (Sandbox Code Playgroud)

等于

<xs:sequence maxOccurs="unbounded">
    <xs:element name="MyType2">...</xs:element>
</xs:sequence>
Run Code Online (Sandbox Code Playgroud)

他们都允许重复元素<MyType2>.一旦序列包含多个元素定义,就会有差异.

<xs:sequence>
    <xs:element maxOccurs="unbounded" name="MyType">...</xs:element>
    <xs:element maxOccurs="unbounded" name="foobar">...</xs:element>
</xs:sequence>
Run Code Online (Sandbox Code Playgroud)

是不是等于

<xs:sequence maxOccurs="unbounded">
    <xs:element name="MyType">...</xs:element>
    <xs:element name="foobar">...</xs:element>
</xs:sequence>
Run Code Online (Sandbox Code Playgroud)

第一个允许结构

<MyType/>
<MyType/>
<foobar/>
<foobar/>
Run Code Online (Sandbox Code Playgroud)

但第二个不允许这样的结构.相反,它允许像

<MyType/>
<foobar/>
<MyType/>
<foobar/>
Run Code Online (Sandbox Code Playgroud)

另一方面,第一个定义不允许这样做.