顺序指示器与元素的出现指示器

发布于 2024-12-08 14:32:48 字数 616 浏览 0 评论 0原文

之间有什么区别

<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

What's the difference between

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

and

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

In the first example the occurrence indicator is applied to xs:sequence and the second time it is applied to xs:element.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

原野 2024-12-15 14:32:48

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

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

第一个匹配 child1child2 的任意数量的序列、 child3

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

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

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

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

In your particular case, there is no difference but consider the situation when the sequence contains more than one element:

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

compared with:

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

The first matches any number of sequences of child1, child2, child3:

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

and the second matches a single sequence that can contain one or more child1 elements followed by one or more child2 elements followed by one or more child3 elements:

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

Your schemas have identical effect because a sequence that contains a single element repeated is the same as a repeating sequence that contains a single element. Normally, the sequence repeating and the elements repeating lead to different content models.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文