The grammar for selectors:
[1] Selector ::= Path ( '|' Path )* [2] Path ::= ('.//')? Step ( '/' Step )* [3] Step ::= '.' | NameTest [4] NameTest ::= QName | '*' | NCName ':' '*'
The grammar for fields:
[7] Path ::= ('.//')? ( Step '/' )* ( Step | '@' NameTest )
Keep in mind that the default namespace does not affect XPath expressions--so don't use the default namespace in your schema!!!