gpt4 book ai didi

xml - 不明确的 XML 模式

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

我正在尝试为类似于以下的 XML 生成一个非常简单的 XML 模式:

<messages>
<item>
<important_tag></important_tag>
</item>
<item>
<important_tag></important_tag>
<tag2></tag2>
</item>
<item>
<tag2></tag2>
<tag3></tag3>
</item>
</messages>

想法是<important_tag>将有一个特定的定义,它可能会或可能不会出现在 <item> 下.它也可能出现不止一次。此外,<important_tag> 之前或之后可能还有其他标签我无法提前命名。

我想给<important_tag>一个具体的定义.例如,定义它必须包含的属性。我的意思是 if important_tag 存在,它必须符合我的定义。任何其他标签都不必符合任何定义。

我尝试使用以下方案:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="messages">
<xs:complexType>
<xs:sequence>
<xs:element ref="item" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="item">
<xs:complexType>
<xs:sequence>
<xs:element ref="important_tag" minOccurs="0"/>
<xs:any minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="important_tag">
<xs:complexType>
<xs:simpleContent>
... specific definitions for important_tag ...
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>

这会导致错误,指出架构不明确。

准确的错误信息是:

cos-nonambig: '<xs:element ref="important_tag">' makes the content model non-deterministic against '<xs:any>'. Possible causes: name equality, overlapping occurrence or substitution groups.

我正在使用 Altova 的 XML Spy。

我该如何解决?

谢谢,达娜

最佳答案

MSDN 上有一篇很棒的文章讨论了设计可扩展模式,您可以找到它 here ,我建议你通读一遍,但具体到你的观点,它解释了为什么你会在第 2 点收到这个错误。在“使用 XML 模式设计一个版本化的 XML 格式”下(你可以搜索“非确定性”和直接到那里。

基本上,一旦你有了一个 xs:any 元素,验证器就不能对其他同级元素做任何假设,所以 - 你很可能有一个 important_tag 的定义,它不需要那些强制属性,所以这些元素不能被验证

关于xml - 不明确的 XML 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/386377/

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