Я пытаюсь создать довольно простую 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.
Я использую XML Spy от Altova.
Как мне это решить?
Спасибо, Дана