xs:selector
<xs:selector
id = "ID
"
xpath = "XPath expression" >
<!-- (xs:annotation?) -->
</xs:selector>
A single xs:selector
element is placed inside each xs:unique
, xs:key
, and xs:keyref
element to specify the element
nodes for which the key or key reference is defined. The node set
is selected by an XPath expression contained in the value of the
xpath
attribute. The context
node for this XPath expression is the element matched by the
xs:element
declaration in which
the xs:unique
, xs:key
, or xs:keyref
element appears.
Not all XPath expressions are allowed here. In particular,
the XPath expression must be an abbreviated location path that
limits itself to the child axis. The only node tests used are
element name, the *
wildcard,
and the prefix
:*
wildcard. Abbreviated syntax must be
used; predicates are not allowed. Thus, person/name/first_name
is a legal XPath
expression for this attribute, but person//name
and name/first_name/@id
are not. Several
instances of this restricted form of XPath expression can be
combined with the vertical bar so that person/name/first_name |
person/name/last_name
is also an acceptable XPath
expression. Finally, the XPath expression may begin with .//
so that .//name
is valid. However, this is the
only place the descendant-or-self axis can be used; no other forms
of XPath expression are allowed here.