0

XPath (1.0) を使用して、XML ドキュメント内の名前空間ノードを返すことはできますか?

注: 特定の名前空間を持つノードを求めているのではなく、名前空間ノード自体を求めています。そうではありません:

//node()[namespace-uri()='http://a.b']
4

2 に答える 2

3

名前空間軸が実装されている場合 (Firefox/Mozilla はそれを拒否してい//namespace::node()ます)、すべての名前空間ノードを提供します。ただし、XSLT/XPath データ モデルの名前空間ノードは、XML ドキュメントの名前空間宣言属性とは異なることに注意してください。

<root xmlns="http://example.com/ns">
  <foo>
    <bar>baz</bar>
  </foo>
</root>

3 つの要素すべてには、スコープ内の名前空間ノードが 2 つあります。ルート要素で宣言されたデフォルトのノードと、xml名前空間用の組み込みノードです。

于 2012-06-25T12:06:48.160 に答える
1

namespace::XPath 1.0 には軸があるので、それが可能です。2.0 では廃止され、互換モードでのみ機能します。ただし、スコープ内のすべての名前空間バインディング/プレフィックスを照会できます。

通常、実際の名前空間ノードに依存することはお勧めできませんが、避けられない場合もあります。namespace::軸には、その要素のスコープ内にあるすべての名前空間ノードが含まれていることに注意してください。その特定の要素にバインドされたものを見つけるには、ノード リストを親要素のスコープ内の名前空間と比較する必要があります。

于 2012-06-25T12:04:18.807 に答える