gpt4 book ai didi

XML 架构 : maxOccurs , minOccurs

转载 作者:数据小太阳 更新时间:2023-10-29 01:45:20 25 4
gpt4 key购买 nike

当我运行我的代码时,它给了我这个错误

[ s4s-att-not-allowed: Attribute 'maxOccurs' cannot appear in element 'element'.]

这是我的架构:

<xs:element name="parameters" maxOccurs="1" minOccurs="0">
<xs:complexType>
<xs:all>
<xs:element ref="p ?"/>
</xs:all>
</xs:complexType>
</xs:element>

最佳答案

<xs:element>可以在顶层声明(低于 xs:schema )但它不能有 minOccursmaxOccurs因为没有上下文就没有任何意义。如果它是根,则它只能有一个元素,如果不是,则该信息指的是父元素的上下文。这是合法的:

<xs:schema ...>
<xs:element name="parameters">...</xs:element>
...
</xs:schema>

但这不是:

<xs:schema ...>
<xs:element name="parameters" maxOccurs="1" minOccurs="0">...</xs:element>
...
</xs:schema>

您可以引用到顶级xs:element在一个组中,例如 xs:sequence .在这里您可以使用这些属性,因为现在您有一个上下文(该组中允许多少个)。这是合法的:

<xs:schema ...>
<xs:element name="parent">
<xs:complexType>
<xs:sequence>
<xs:element ref="parameters" maxOccurs="1" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="parameters">
<xs:complexType>
<xs:all>
<xs:element ref="p" minOccurs="0"/>
</xs:all>
</xs:complexType>
</xs:element>
...
</xs:schema>

在这里<parent><parameters> 的上下文发生,所以你可以说它被允许在那里的次数。 <parameters>的定义是全局性的,你使用 ref属性来引用它。

如果您永远不需要重复使用 parameters或者如果你永远不会拥有 parameters作为 root,你不需要它在顶层,可以将它嵌套在你的 parent 中定义。在这种情况下,您可以使用 name属性为 minOccursmaxOccurs .

<xs:schema ...>
<xs:element name="parent">
<xs:complexType>
<xs:sequence>
<xs:element name="parameters" maxOccurs="1" minOccurs="0" />
<xs:complexType>
<xs:all>
<xs:element ref="p" minOccurs="0"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>

...
</xs:schema>

您还可以引用顶级类型。重用、扩展和限制类型更为常见,因此这也是定义元素的有效(推荐)方式:

<xs:schema ...>
<xs:element name="parent">
<xs:complexType>
<xs:sequence>
<xs:element name="parameters" type="ParameterType" maxOccurs="1" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:complexType name="ParameterType">
<xs:all>
<xs:element ref="p" minOccurs="0"/>
</xs:all>
</xs:complexType>
...
</xs:schema>

关于XML 架构 : maxOccurs , minOccurs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23115318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com