Элемент <xsd:unique>
Указывает, что значение атрибута или элемента (либо сочетание значений атрибутов или элементов) должно быть уникально в данной области видимости. Значение должно быть уникальным или равняться nil.
<unique
id = ID
name = NCName
{any attributes with non-schema Namespace}...>
Content: (annotation?, (selector, field+))
</unique>
Атрибуты
id
Идентификатор данного элемента. Значение id должно иметь тип ID и быть уникальным в пределах документа, содержащего этот элемент.Необязательно.
имя
Имя элемента unique. Имя не должно содержать двоеточий (NCName), как определено в спецификации пространств имен XML.Имя должно быть уникальным в области действия ограничения IDENTITY.
Обязательный.
Сведения об элементе
Количество вхождений |
Однократно |
Родительские элементы |
|
Описание |
Примечания
Элемент unique должен содержать следующие элементы в указанном порядке.
selector |
Элемент selector содержит выражение XPath, определяющее набор элементов, в котором значения полей, указанных элементами field, должны быть уникальными. Элемент selector должен существовать в единственном экземпляре. |
поле |
Каждый элемент field содержит XPath-выражение, определяющее значения (атрибутов или элементов), которые должны быть уникальны на множестве элементов, определяемых элементом selector. Если имеется более одного элемента field, сочетание элементов field должно быть уникальным. В этом случае значения одного элемента field могут и не быть уникальными среди выбранных элементов, но сочетание значений всех полей должно быть уникальным. Допускается существование одного или более элементов selector. |
Пример
В следующем примере определяется схема с корневым элементом ordersByCustomer, который может содержать неограниченную последовательность элементов customerOrders. В элементе ordersByCustomer элемент unique указывает на то, что атрибут customerID должен быть уникальным во всех элементах customerOrders.
<xs:schema targetNamespace="http://tempuri.org/myschema/unique" elementFormDefault="qualified"
xmlns="http://tempuri.org/myschema/unique"
xmlns:mstns="http://tempuri.org/myschema/unique"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="customerOrderType">
<xs:sequence>
<xs:element name="item" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="itemID" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="CustomerID" type="xs:string"/>
</xs:complexType>
<xs:element name="ordersByCustomer">
<xs:complexType>
<xs:sequence>
<xs:element name="customerOrders" type="customerOrderType"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="oneCustomerOrdersforEachCustomerID">
<xs:selector xpath="mstns:customerOrders"/>
<xs:field xpath="@CustomerID"/>
</xs:unique>
</xs:element>
</xs:schema>
Другие ресурсы
Дополнительные сведения см. в документе «Рекомендация W3C по схемам XML, часть 1: структуры» по адресу www.w3.org/TR/2001/REC-xmlschema-1-20010502/\#element-all.