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

2024-01-09

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

<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 or 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>

并且它们都允许重复该元素<MyType2>。一旦序列包含多个元素定义,就会出现差异。

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

is not等于

<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/>

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐