Xsd 使用min/max时的任何差异都发生在序列级别而不是元素级别

Xsd 使用min/max时的任何差异都发生在序列级别而不是元素级别,xsd,Xsd,我的意思是,是否存在以下情况: <xs:element name="MyType1"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="MyType2">...</xs:element> </xs:sequence> </xs:complexType>

我的意思是,是否存在以下情况:

<xs:element name="MyType1">
    <xs:complexType>
        <xs:sequence>
            <xs:element maxOccurs="unbounded" name="MyType2">...</xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

...
对此有不同的含义:

<xs:element name="MyType1">
    <xs:complexType>
        <xs:sequence maxOccurs="unbounded">
            <xs:element name="MyType2">...</xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

...

提前感谢

一般来说,元素组(序列或选项)上的出现约束(
minOccurs
maxOccurs
)意味着整个组可以重复,而元素上的出现约束意味着元素可以在组中的下一个元素出现之前重复

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

<xs:sequence>
    <xs:element maxOccurs="unbounded" name="MyType2">...</xs:element>
</xs:sequence>

...
等于

<xs:sequence maxOccurs="unbounded">
    <xs:element name="MyType2">...</xs:element>
</xs:sequence>

...
它们都允许重复元素
。一旦序列包含多个元素定义,就会出现差异

<xs:sequence>
    <xs:element maxOccurs="unbounded" name="MyType">...</xs:element>
    <xs:element maxOccurs="unbounded" name="foobar">...</xs:element>
</xs:sequence>

...
...
不等于

<xs:sequence maxOccurs="unbounded">
    <xs:element name="MyType">...</xs:element>
    <xs:element name="foobar">...</xs:element>
</xs:sequence>

...
...
第一种方法允许像这样的结构

<MyType/>
<MyType/>
<foobar/>
<foobar/>
<MyType/>
<foobar/>
<MyType/>
<foobar/>

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

<MyType/>
<MyType/>
<foobar/>
<foobar/>
<MyType/>
<foobar/>
<MyType/>
<foobar/>

另一方面,第一个定义不允许

<xs:sequence>
    <xs:element maxOccurs="unbounded" name="MyType">...</xs:element>
    <xs:element maxOccurs="unbounded" name="foobar">...</xs:element>
</xs:sequence>