XPath を使用して名前空間内の要素を選択する
-
02-07-2019 - |
質問
指定された名前空間 (接頭辞) を持つドキュメント内の最上位の要素を選択したいと考えています。
すなわち:/html/body (XHTML 名前空間内) で始まるか、特定の名前空間内のいくつかの要素の 1 つで始まる XML ドキュメントがあります。事実上、/html/body を取り除き、本文の内容またはルートの名前空間要素全体を返すだけです。
解決
XPath 2.0 および XQuery 1.0 では、次のコマンドを使用して名前空間プレフィックスに対してテストできます。 スコープ内のプレフィックス() 述語内の関数。例えば
//*[in-scope-prefixes(.)='html']
v2 を使用できない場合、XPath 1.0 では、 名前空間-uri() 名前空間自体に対してテストする関数。例えば
//*[namespace-uri()='http://www.w3c.org/1999/xhtml']
他のヒント
必要な XPath 式は次のとおりです。
/html:html/html:body/node()|/foo:*
ここで、「html」プレフィックスは XHTML 名前空間にマップされ、「foo」プレフィックスはターゲットの名前空間にマップされます。
所属していません StackOverflow