特定の名前空間 (プレフィックス) を持つドキュメントの最上位の要素を選択したい。
より具体的には、/html/body (XHTML 名前空間内) または特定の名前空間内のいくつかの要素のいずれかで始まる XML ドキュメントがあります。/html/body を効果的に取り除き、本文の内容またはルートの名前空間要素全体を返すだけです。
特定の名前空間 (プレフィックス) を持つドキュメントの最上位の要素を選択したい。
より具体的には、/html/body (XHTML 名前空間内) または特定の名前空間内のいくつかの要素のいずれかで始まる XML ドキュメントがあります。/html/body を効果的に取り除き、本文の内容またはルートの名前空間要素全体を返すだけです。
XPath 2.0 および XQuery 1.0では、述語でin-scope-prefixes()関数を使用して名前空間プレフィックスに対してテストできます。例えば
//*[in-scope-prefixes(.)='html']
v2 を使用できない場合は、XPath 1.0 でnamespace-uri()関数を使用して名前空間自体をテストできます。例えば
//*[namespace-uri()='http://www.w3c.org/1999/xhtml']
私が欲しいXPath式は次のとおりです。
/html:html/html:body/node()|/foo:*
「html」プレフィックスは XHTML 名前空間にマップされ、「foo」プレフィックスはターゲット名前空間にマップされます。