Evet, var:
//test/item[not(contains(text(), '(default)'))]
İpucu: not()
XPath'de bir işlev yerine bir operatörüdür. Bu ifade etmek
alternatif muhtemelen daha iyi yoludur: İki ifadeleri arasında ince ama önemli bir fark vardır
//test/item[not(text()[contains(., '(default)')])]
(en sırasıyla A ve B diyelim).
Basit durum: Tüm <item>
yalnızca tek bir metin düğümü çocuğuna sahipse, hem A hem de B davranır.
Kompleks durum: '(default)'
Bunlardan ilk oluştuğunda<item>
Eğer birden metin düğümü çocuk sahibi olabilir, ifade bir tek eşleşir.
text()
maçları tüm metin düğümü çocukları ve bir düğüm kümesi üretir olmasıdır. Şimdiye kadar sürpriz yok. Şimdi, bir ilk argüman olarak düğüm kümesindeki kabul eder; ancak işini yapması dizeye dönüştürmek gerekiyor. Ve düğüm kümesi dizeye sadece sette ilk düğümün dize değerini üreten dönüşüm gelen diğer tüm düğümler (ne demek istediğimi görmek için string(//item)
deneyin) dikkate alınmaz. Basit bir durumda bu yanı olur tam olarak ne, ama sonuç olarak şaşırtıcı değildir. Açıkça her metin düğümü kontrol bireysel yerine yalnızca tam <item>
elemanın dize değeri denetleyerek bu konuda
İfade B fırsatlar. Bu nedenle, bu ikisinin daha sağlam.