Regexp: (\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*
a: Ok
a12/b312/b312/b312/b312/b312/b312/b312/b312/b312/b312/b312/b3: Ok
*: Ok
a|b: Ok
.//a:b: Ok
a/b/c: Ok
a/*/b: Ok
a:*/b:*/c:*: Ok
child::a/child::b:*: Ok
child::a/child::b:*|a/*/b|.//a:b: Ok
1: Fail
1ab: Fail
a:1: Ok
@a: Fail
ancestor::a: Ok
Regexp: (\.//)?(((child::)?(([\i-[:]][\c-[:]]*:)?([\i-[:]][\c-[:]]*|\*)))|\.)(/(((child::)?(([\i-[:]][\c-[:]]*:)?([\i-[:]][\c-[:]]*|\*)))|\.))*(\|(\.//)?(((child::)?(([\i-[:]][\c-[:]]*:)?([\i-[:]][\c-[:]]*|\*)))|\.)(/(((child::)?(([\i-[:]][\c-[:]]*:)?([\i-[:]][\c-[:]]*|\*)))|\.))*)*
a: Ok
a12/b312/b312/b312/b312/b312/b312/b312/b312/b312/b312/b312/b3: Ok
*: Ok
a|b: Ok
.//a:b: Ok
a/b/c: Ok
a/*/b: Ok
a:*/b:*/c:*: Ok
child::a/child::b:*: Ok
child::a/child::b:*|a/*/b|.//a:b: Ok
1: Fail
1ab: Fail
a:1: Fail
@a: Fail
ancestor::a: Fail