Bu XPath 1.0 içindir. Ortamınız XPath 2.0'ı destekliyorsa, buraya bakın .
Evet. Mümkün, ama güzel değil.
/html/body//text()[
contains(
translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),
'test'
)
]
Bu, alfabenin önceden bilindiği arama dizeleri için işe yarar. Görmeyi beklediğiniz tüm aksanlı karakterleri ekleyin.
Yapabiliyorsanız, sizi ilgilendiren metni <span>
, HTML oluştururken belirli bir sınıfa sahip bir metnin içine almak gibi başka yollarla işaretleyin . Bu tür şeyleri XPath ile bulmak, eleman metnindeki alt dizelerden çok daha kolaydır.
Bu bir seçenek değilse, JavaScript'in (veya XPath yürütmek için kullandığınız başka bir ana bilgisayar dilinin) dinamik bir XPath ifadesi oluşturmanıza yardımcı olmasına izin verebilirsiniz:
function xpathPrepare(xpath, searchString) {
return xpath.replace("$u", searchString.toUpperCase())
.replace("$l", searchString.toLowerCase())
.replace("$s", searchString.toLowerCase());
}
xp = xpathPrepare("//text()[contains(translate(., '$u', '$l'), '$s')]", "Test");
( @ KirillPolishchuk'un cevabına şapka ipucu - elbette sadece gerçekten aradığınız karakterleri çevirmeniz gerekiyor .)
Bu yaklaşım, büyük bir artı olan alfabe hakkında önceden bilgi sahibi olmayı gerektirmeden herhangi bir arama dizisi için işe yarayacaktır.
Arama dizeleri tek tırnak içerebildiği zaman yukarıdaki yöntemlerin ikisi de başarısız olur, bu durumda işler daha karmaşık hale gelir .