gpt4 book ai didi

xsd - 如何为无序列表创建一个模式,其中有些出现一次,有些出现多次

转载 作者:行者123 更新时间:2023-12-04 16:57:57 24 4
gpt4 key购买 nike

这是与 How to create a schema for an unordered list of XML nodes, with occurrence constraints 类似的问题,但实际上稍微简单一些。但是,我很难理解序列和选择背后的逻辑(尤其是当它们嵌套在选择序列或序列选择序列中时),尽管我已经研究了很长时间,但我无法理解上面的例子有效。

我需要的是节点列表 ChildA 和 ChildB 的架构,其中 ChildA 可以出现 0-n 次,但 ChildB 只能出现 0-1 次。 (实际上我需要每种类型的几个节点,但如果我可以为 ChildA 和 ChildB 做到这一点,那么将它扩展到 ChildX 等和 ChildY 等应该很简单)。不应有顺序约束。我将不胜感激任何帮助。任何深入解释架构指标的链接也会有所帮助。

最佳答案

这将是我很快想到的最简单的解决方案。这里的关键点是在“主”序列中使用另一个序列。通过将内部序列设置为以 <ChildB> 开头来保持模式的确定性和 <ChildB>通过将该序列的基数设置为 0-1 来保持可选。

这是一个 XMLSchema 1.0 解决方案。

<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

<!-- Schema for elements ChildA and ChildB
The requirements are as follows:
* ChildA and ChildB may occur in any order.
* ChildA is optional and may occur multiple times.
* ChildB is optional and may occur once only.
-->

<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="AB-container" type="AB-type" />
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:complexType name="AB-type">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="ChildA" type="xs:string" />
<xs:sequence minOccurs="0">
<xs:element name="ChildB" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="ChildA" type="xs:string" />
</xs:sequence>
</xs:sequence>
</xs:complexType>

</xs:schema>

关于xsd - 如何为无序列表创建一个模式,其中有些出现一次,有些出现多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14321579/

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