Я хочу сделать атрибут элемента уникальным, как первичный ключ. как это сделать?
Как сделать атрибут уникальным в xml-схеме?
Ответ 1
Что-то вроде этого должно работать:
<xs:element name="books" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="book" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="isbn" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:unique name="unique-isbn">
<xs:selector xpath="book"/>
<xs:field xpath="@isbn"/>
</xs:unique>
</xs:element>
В принципе, вы можете определить ограничение "единственности" с помощью элемента <xs:unique>
и определить, к какой XPath должна применяться эта уникальность.
Подробнее см. в разделе W3Schools на <xs:unique>
.
Ответ 2
Примечание: Это не работает, если у вас разные пространства имен. Затем вам нужно полное выражение XPath:
Это может быть как:
<xs:unique name="unique-isbn">
<xs:selector xpath="theOtherNamespace:book"/>
<xs:field xpath="@isbn"/>
</xs:unique>