xs:selector — Definition of the the path selecting an element for a uniqueness constraint.
<xs:selector id = xs:ID xpath = xs:token {any attributes with non-schema namespace} > Content: (xs:annotation?) </xs:selector>
May be included in: xs:key, xs:keyref, xs:unique
xs:selector
is used to define the element on which
a uniqueness constraint or reference is checked (it cannot be an
attribute, since attributes are already unique per XML 1.0). It is
identified by a relative XPath expression.
The constraint is checked while looping on the XPath expression is
resolved relative to the root element of the constraint. It serves as
the location from which xs:field
XPath expressions
are resolved.
The xpath
attribute uses a simple subset of XPath
1.0. The motivation of the W3C XML Schema Working Group for defining
this subset is to simplify the work of the implementers of schema
processors, and also to define a subset that constrains the path to
stay within the scope of the current element.
This subset is restricted to use the child only; self and descendant,
and self XPath axes through their abbreviated syntaxes without
including any test in any of the XPath location steps and without
using any XPath functions. It is identical to the subset defined for
xs:field
, except that attributes are allowed in
xs:field
and forbidden in
xs:selector
.
The formal extended BNF given in the W3C Recommendation is as follow:
Selector ::= Path ( '|' Path )* Path ::= ('.//')? Step ( '/' Step )* Step ::= '.' | NameTest NameTest ::= QName | '*' | NCName ':' '*'