XML文書内のいくつかのノードには名前空間があり、定義された接頭辞で指定されます。名前空間修飾ノードのXPath構文がないのはなぜですか?
XPath 1.0にローカル名()を指定して名前空間を無視することは可能です。
しかし、私は、XPathのライターが完全な名前空間修飾名を識別子として使用してノードを見つけることを可能にしたいと考えています。
呼び出すコード(私の場合はJava)に名前空間宣言を追加することをお勧めします。しかし、これはXpathを書く人が名前空間で作業する能力を持っていないことを意味します!
純粋なXPathを使用して完全修飾名でノードを見つけるにはどうすればよいですか?
私が質問を正しく理解している場合、なぜ 'addNamespace(" abc "、" http://example.com ")のような命令を使って名前空間を宣言する必要があるのかを尋ねてきます。 'http:// example.com'を何らかの形でクエリの中で直接使用するのではなく、'/abc:node'のようなXpathクエリです。私は質問を正しく解釈しましたか? –
@ジョンボールはい、そうです。何らかの形でXPath内でabc = http://example.comを宣言した後に、XPathクエリで接頭辞abcを直接使用するとよいでしょう。私はXPath式が短く、その中に定義を挿入するのは普通ではないが、技術的にはXPathでそれができないようにすることは技術的に何もないことを理解しています。 –
良い質問、+1。接頭辞はわずかな構文砂糖であると考えられているので、名前空間URIは重要な意味を持ちますが、接頭辞を混乱させることなくノード名を照合することは有益でしょう。プレフィックスを宣言する方法はありません。 – LarsH