XPath: Öznitelikleri olmayan düğümler nasıl seçilir?


96

XPath kullanarak, özniteliği olmayan düğümler nasıl seçilir (burada öznitelik sayısı = 0)?

Örneğin:

<nodes>
    <node attribute1="aaaa"></node>
    <node attribute1="bbbb"></node>
    <node></node> <- FIND THIS
</nodes>

Yanıtlar:


155
//node[not(@*)]

Bu, belgedeki "düğüm" adlı tüm düğümleri herhangi bir öznitelik olmadan seçmek için kullanılan XPath'dir.


1
Bu güzel, ama yine <node class=""></node>de yapabileceğimiz bir şey buluyor mu?
Marek

1
@MarekCzaplicki, bu durumu ele almak için aşağıdaki cevaba bakınız. stackoverflow.com/questions/1323755/…
phil

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

Sıfır öznitelikli tüm <düğüm> seçecek


9

Marek Czaplicki'nin yorumunu ele almak ve cevabı genişletmek için

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

.... sıfır öznitelikli VEYA tamamı boş özniteliklere sahip tüm düğüm elemanlarını seçecektir. Hepsi yerine ilgilendiğiniz belirli bir özellik olsaydı, o zaman kullanabilirsiniz

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

... ve bu, attribute1OR adında bir attribute1özniteliği olmayan ve boş bir özniteliğe sahip tüm düğüm öğelerini seçer .

Yani, aşağıdaki öğeler bu xpath ifadelerinden herhangi biri tarafından seçilecektir.

<nodes>
    <node attribute1="aaaa"></node>
    <node attribute1=""></node> <!--This one -->
    <node attribute1="bbbb"></node>
    <node></node> <!--...and this one -->
</nodes>

Burada jsfiddle örneğine bakın

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.