2009-08-24 12 views

答えて

108
//node[not(@*)] 

属性すべて<ノードを選択します。マレクCzaplickiさんのコメントに対処し、答え

//node[not(@*) or not(string-length(@*))] 

を拡大する

+0

+1のいずれかによって取り出されたことだろう - それは、より多くのXPath-yのソリューションです。 :) – Tomalak

+0

これはいいですが、それでも '"それについて何かできることはありますか? –

+0

@MarekCzaplickiこのケースに対処するには、以下の回答を参照してください。 https://stackoverflow.com/questions/1323755/xpath-how-to-select-nodes-which-have-no-attributes/43910689#43910689 – pip

21
//node[count(@*)=0] 

はゼロと>が属性せずに文書で "ノード" という名前のすべてのノードを選択するために、XPathをだ

3

は....ゼロ属性を持つすべてのノードの要素を選択するか、すべての空の属性を持っているでしょう。それはむしろ、それらのすべてよりも、あなたが興味を持っているだけで、特定の属性であった場合は、

//node[not(@attribute1) or not(string-length(@attribute1))] 

を使用することができます...と、これはどちらかの属性がattribute1と呼ばれるORていないすべてのノードの要素を選択することになりますそれらは空のattribute1属性を持ちます。ある

は、次の要素は、これらのXPath式

<nodes> 
    <node attribute1="aaaa"></node> 
    <node attribute1=""></node> <!--This one --> 
    <node attribute1="bbbb"></node> 
    <node></node> <!--...and this one --> 
</nodes> 
関連する問題