XPath selector
выбирает узлы, которые должны быть уникальными (в этом случае следует выбирать узлы автора).
XPath field
выбирает, что «делает их уникальными» (в этом случае использование .
приведет к их типизированному значению, в этом случае будет использоваться текст между тегами, рассматриваемый как строка).
Документ
<?xml version="1.0" encoding="UTF-8"?>
<authors>
<author>a1</author>
<author>a2</author>
<lastmodified>2010-01-01</lastmodified>
</authors>
должен быть действителен для следующей схемы:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="authors">
<xs:complexType>
<xs:sequence>
<xs:element name="author" maxOccurs="unbounded" type="xs:string"/>
<xs:element name="lastmodified" type="xs:date" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="uniqueAuthor">
<xs:selector xpath="author"/>
<xs:field xpath="."/>
</xs:unique>
</xs:element>
</xs:schema>
в то время как этот не должен:
<?xml version="1.0" encoding="UTF-8"?>
<authors>
<author>a1</author>
<author>a1</author>
<lastmodified>2010-01-01</lastmodified>
</authors>