Я пытаюсь создать довольно простую 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>
. Например, определите атрибуты, которые он должен содержать.
Я имею в виду, что , если присутствует важный_ тег, он должен соответствовать моему определению. Любой другой тег не должен соответствовать какому-либо определению.
Я пытался использовать следующую схему:
<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's XML Spy.
Как мне решить эту проблему?
Спасибо,
Dana