Допустим, у меня есть схема, которая определяет следующий XML:
<Values>
<Add Key="Key1">Value 1</Add>
<Add Key="Key2">Value 2</Add>
<Add Key="Key3">Value 3</Add>
<Add Key="Key4">Value 4</Add>
</Values>
Я хотел бы, чтобы на уровне схемы была возможность обеспечить уникальность значений атрибута Key, т. Е. Приведенный выше пример действителен, но следующий пример будет недействительным:
<Values>
<Add Key="Key1">Value 1</Add>
<Add Key="Key2">Value 2</Add>
<Add Key="Key2">Value 3</Add>
<Add Key="Key3">Value 4</Add>
</Values>
Обратите внимание, что есть два Add
элемента с Key
из Key2
Для справки приведем простую схему:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Values">
<xs:complexType>
<xs:sequence>
<xs:element name="Add" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Key" type="xs:token" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
У меня сложилось впечатление, что это невозможно на уровне схемы, однако я весь в ушах.