私はXPathの魔法を理解しようとすると深刻な問題を抱えています。私たちはCのなしに、持っているどのように多くのBのカウントするようにしたい、今すぐXPath 1.0で名前空間を無視する方法は?
<a>
<b>
<c/>
</b>
</a>
:
は基本的に、私はいくつかのXMLとても似ています。これは、次のXPathで簡単に行うことができます。
count(*/b[not(descendant::c)])
は今の質問は、この単純で、任意の名前空間を無視してどのように私は、同じことをしますか?
私はそれがこのようなものだったと思いますか?
count(*/[local-name()='b']/[not(descendant::[local-name()='c'])])
しかし、これは正しくありません。上記のXPathと同等のものは何でしょうが、それは名前空間を無視しますか?一般的に名前空間を倒すけどにより適切に彼らと仕事しない方がよいということ
count(*[local-name()='b' and not(descendant::*[local-name()='c'])])
注:
count(*/b[not(descendant::c)])
は、次のように名前空間を無視するように書き換えることができ
XPath 1.0について具体的に質問している場合は、質問に明記してください。 XPath 2.0および3.0では、任意の名前空間にローカル名がcの要素を選択するために*:cを記述することができます。 –
OPは明示的にxpath-1.0としてタグ付けしましたが、タイトル編集で作成したはずです。今修正されました。 – kjhughes
私の悪いです。トピックをxpath-1.0としてタグ付けするだけで十分だと思っていました。私は次回にその話題に必ず追加します。 – Kahn