あなたが試みるかもしれないいくつかのテクニックがあります。どちらを使用するかは、ドキュメントから取得する必要のある情報、必要な厳密さ、および使用しているXPath実装の適合性によって異なります。
特定のプレフィックスに関連付けられた名前空間URIを取得する1つの方法は、namespace::
軸を使用することです。これにより、名前がプレフィックスで値が名前空間URIである名前空間ノードが得られます。たとえば、次のパスを使用して、ドキュメント要素のデフォルトの名前空間URIを取得できます。
/*/namespace::*[name()='']
これを使用して、XPathNavigatorの名前空間の関連付けを設定できる場合があります。ただし、namespace::
軸はXPath 1.0のコーナーの1つであり、常に実装されているわけではないことに注意してください。
その名前空間URIを取得する2番目の方法はnamespace-uri()
、ドキュメント要素で関数を使用することです(これは、常にその名前空間にあると言っています)。表現:
namespace-uri(/*)
その名前空間を提供します。
別の方法は、プレフィックスをその名前空間に関連付けることを忘れて、パスを名前空間なしにすることです。local-name()
名前空間がわからない要素を参照する必要があるときはいつでも、関数を使用してこれを行うことができます。例えば:
//*[local-name() = 'Element']
本当に必要な場合は、さらに一歩進んで、要素の名前空間URIをドキュメント要素の1つに対してテストできます。
//*[local-name() = 'Element' and namespace-uri() = namespace-uri(/*)]
名前空間があなたにとって何の意味もないように思われる場合の最後のオプションは、名前空間を取り除くフィルターを介してXMLを実行することです。そうすれば、XPathでそれらについてまったく心配する必要がなくなります。これを行う最も簡単な方法はxmlns
、正規表現を使用して属性を削除することですが、同時に他の整理を行う必要がある場合は、より複雑なことを行うことができます。