我想产生一个非常简单的XML模式类似以下内容的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>
的具体定义。例如,定义它必须包含的属性。 我的意思是如果 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间谍。
我该如何解决这个问题?
感谢, 达纳
您能否发布您正在收到的确切错误消息以及您使用了哪些工具? – Tomalak 2008-12-22 15:03:17