gpt4 book ai didi

xml - XSD 出现界限应该在序列上还是在元素上?

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

如果我有一个包含一个或多个子元素的元素,min/maxoccurs 属性应该在 xsd:sequence 元素、xsd:element 上,还是两者都在,还是两者都不在?

<xsd:element name="books">
<xsd:complexType>
<xsd:sequence minOccurs="1" maxOccurs="unbounded"> <!-- here? -->
<xsd:element ref="book" minOccurs="1" maxOccurs="unbounded"/> <!-- or here? -->
</xsd:sequence>
</xsd:complexType>
</xsd:element>

最佳答案

几乎在所有情况下,您都希望将 min/max 出现在序列内的元素上,而不是序列上。使用您的示例:

<xsd:element name="books">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="book" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

这是明确的。如果您在一行中有一系列书籍元素,您可以准确指出是哪个模式项正在生成它们。然而:

<xsd:element name="books">
<xsd:complexType>
<xsd:sequence minOccurs="1" maxOccurs="unbounded"/>
<xsd:element ref="book" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

这里,如果你连续有两个“book”元素,你是连续有两个sequence,还是有一个sequence 有两个 book 元素?这使 Unique Particle Attribution 失败了要求。

最后,如果您将最小/最大出现次数放在序列上,然后再添加一个额外的元素:

<xsd:element name="books">
<xsd:complexType>
<xsd:sequence minOccurs="1" maxOccurs="unbounded"/>
<xsd:element ref="book"/>
<xsd:element ref="ebook"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

那么这可能允许以下 XML,这可能不是您想要的:

<books>
<book/><ebook/><book/><ebook/><book/><ebook/><book/><ebook/>
</books>

而如果您有:

<xsd:element name="books">
<xsd:complexType>
<xsd:sequence/>
<xsd:element ref="book" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element ref="ebook" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

那么您的意图就很明确了:一个或多个 book 元素的序列,后跟一个或多个 ebook 元素的序列。

关于xml - XSD 出现界限应该在序列上还是在元素上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/538989/

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