1 Regexp: (\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)* 2 a: Ok 3 a12/b312/b312/b312/b312/b312/b312/b312/b312/b312/b312/b312/b3: Ok 4 *: Ok 5 a|b: Ok 6 .//a:b: Ok 7 a/b/c: Ok 8 a/*/b: Ok 9 a:*/b:*/c:*: Ok 10 child::a/child::b:*: Ok 11 child::a/child::b:*|a/*/b|.//a:b: Ok 12 1: Fail 13 1ab: Fail 14 a:1: Ok 15 @a: Fail 16 ancestor::a: Ok 17 Regexp: (\.//)?(((child::)?(([\i-[:]][\c-[:]]*:)?([\i-[:]][\c-[:]]*|\*)))|\.)(/(((child::)?(([\i-[:]][\c-[:]]*:)?([\i-[:]][\c-[:]]*|\*)))|\.))*(\|(\.//)?(((child::)?(([\i-[:]][\c-[:]]*:)?([\i-[:]][\c-[:]]*|\*)))|\.)(/(((child::)?(([\i-[:]][\c-[:]]*:)?([\i-[:]][\c-[:]]*|\*)))|\.))*)* 18 a: Ok 19 a12/b312/b312/b312/b312/b312/b312/b312/b312/b312/b312/b312/b3: Ok 20 *: Ok 21 a|b: Ok 22 .//a:b: Ok 23 a/b/c: Ok 24 a/*/b: Ok 25 a:*/b:*/c:*: Ok 26 child::a/child::b:*: Ok 27 child::a/child::b:*|a/*/b|.//a:b: Ok 28 1: Fail 29 1ab: Fail 30 a:1: Fail 31 @a: Fail 32 ancestor::a: Fail 33