gpt4 book ai didi

xsd - xml 模式 maxOccurs = xs :all 内无界

转载 作者:行者123 更新时间:2023-12-02 15:37:28 24 4
gpt4 key购买 nike

xs:allxs:sequence 是否可以结合使用?

我有一个带有元素 probenode 的 xml 结构,它由元素名称、id、url、标签、优先级、statuws_raw、active 组成。以及设备和组的组合。

设备和组可以出现零次或多次...

下面的解决方案不起作用,因为不允许对元素使用 unbounded。在一个 all 组中。

<xs:complexType name="probenodetype">
<xs:all>
<xs:element name="name" type="xs:string" />
<xs:element name="id" type="xs:unsignedInt" />
<xs:element name="url" type="xs:string" />
<xs:element name="tags" />
<xs:element name="priority" type="xs:unsignedInt" />
<xs:element name="status_raw" type="xs:unsignedInt" />
<xs:element name="active" type="xs:boolean" />
<xs:element name="device" type="devicetype" minOccurs="0" maxOccurs="unbounded">
<!-- zie devicetype -->
</xs:element>
<xs:element name="group" type="grouptype" minOccurs="0" maxOccurs="unbounded">
<!-- zie grouptype -->
</xs:element>
</xs:all>
<xs:attribute name="noaccess" type="xs:integer" use="optional" />
</xs:complexType>

最佳答案

在 XSD 1.0 中,xs:all 的子项必须将 maxOccurs 设置为 1。

在 XSD 1.1 中,此限制被解除。

因此您的替代方案似乎是:

  • 使用 XSD 1.1 处理器(Saxon 或 Xerces-J)。

  • 使用 XSD 1.0 并对 probenodetype 的子项施加顺序。如果子项出现的顺序携带信息(因此 id 后跟 url 不同于 url 后跟 id ...),这是一个问题。

在一些简单的情况下,只使用选择和顺序编写一个内容模型来准确接受您建议的内容是可行的,但是由于有七个必需元素,生成的内容模型可能太长太复杂而无用。

在这一点上,一些用户放弃并编写一个具有可重复 OR 组的复杂类型,并将检查名称、ID、URL 等至少出现一次和最多出现一次的责任转移到应用程序中;这允许 XML 的生成器不必担心固定顺序(并打开信息泄漏的侧 channel ,这对某些人来说很重要)但也使模式作为数据提供者和数据之间的契约(Contract)文档的用处有所降低消费者。

关于xsd - xml 模式 maxOccurs = xs :all 内无界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14622677/

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