У меня есть несколько типов данных, которые расширяются друг от друга с помощью идентификатора base = "". Все они в конечном итоге простираются от одного базового типа с идентификационным узлом. Я хотел бы, чтобы схема могла просматривать все элементы, чтобы убедиться, что идентификатор уникален для каждого элемента.xml-схема с использованием уникальных с основами
До сих пор у меня есть:
<effects>
<ResistanceModificationEffect>
<ID>fire_resistance</ID>
<!-- other stuff -->
</ResistanceModificationEffect>
<ResistanceModificationEffect>
<ID>fire_resistance</ID>
<!-- other stuff -->
</ResistanceModificationEffect>
</effects>
и схема:
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="effects">
<xs:complexType>
<xs:sequence>
<xs:element name="ResistanceModificationEffect" type="resistanceModificationEffectDef" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="uniqueID">
<xs:selector xpath=".//*"/>
<xs:field xpath="@ID"/>
</xs:unique>
</xs:element>
</schema>
Что касается хз: единственный элемент, я пробовал различные различные вещи, чтобы сделать это увидеть узел с идентификатор тега как узел для проверки уникальности.
<xs:selector xpath="*"/>
<xs:selector xpath="./*"/>
<xs:selector xpath=".//*"/>
Из всего, что я читал о схемах, все, что мне нужно, это должно
<xs:selector xpath="*"/>
если я не только не понимая его. This Ссылка говорит внизу, что «*» является допустимым идентификатором как выбор всех дочерних элементов, а «@elementName» должен выбрать элемент для сравнения.
Что я не понимаю?