Ini untuk XPath 1.0. Jika lingkungan Anda mendukung XPath 2.0, lihat di sini .
Iya. Mungkin, tapi tidak cantik.
/html/body//text()[
contains(
translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),
'test'
)
]
Ini akan berfungsi untuk string pencarian di mana alfabet diketahui sebelumnya. Tambahkan karakter beraksen yang ingin Anda lihat.
Jika Anda bisa, tandai teks yang Anda minati dengan cara lain, seperti melampirkannya di dalam <span>
yang memiliki kelas tertentu saat membangun HTML. Hal semacam itu jauh lebih mudah ditemukan dengan XPath daripada substring dalam teks elemen.
Jika itu bukan pilihan, Anda dapat mengizinkan JavaScript (atau bahasa host lain yang Anda gunakan untuk menjalankan XPath) membantu Anda membuat ekspresi XPath dinamis:
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");
(Tip tip untuk jawaban @ KirillPolishchuk - tentu saja Anda hanya perlu menerjemahkan karakter yang sebenarnya Anda cari .)
Pendekatan ini akan bekerja untuk string pencarian apa pun, tanpa memerlukan pengetahuan sebelumnya tentang alfabet, yang merupakan nilai tambah yang besar.
Kedua metode di atas gagal ketika string pencarian dapat berisi tanda kutip tunggal, dalam hal ini segalanya menjadi lebih rumit .