Rumah >hujung hadapan web >tutorial js >Bolehkah Pertanyaan XPath Menjadi Tidak Peka Huruf Menggunakan mengandungi()?

Bolehkah Pertanyaan XPath Menjadi Tidak Peka Huruf Menggunakan mengandungi()?

Susan Sarandon
Susan Sarandonasal
2024-10-22 20:45:35952semak imbas

Can XPath Queries Become Case-Insensitive Using contains()?

Case-Insensitive XPath mengandungi() Fungsi

Soalan:

Bolehkah pertanyaan XPath dibuat tidak sensitif huruf besar apabila menggunakan fungsi contains() untuk mencari nod teks?

Jawapan:

Ya , pertanyaan XPath tidak sensitif huruf besar dan kecil boleh dilakukan menggunakan teknik berikut:

Menggunakan terjemah() dan mengandungi():

Kaedah ini melibatkan menterjemah nilai nod dan rentetan carian kepada huruf kecil sebelum menggunakan fungsi mengandungi():

/html/body//text()[
  contains(
    translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),
    'test'
  )
]

Menggunakan Bahasa Hos untuk Membina Ekspresi XPath Dinamik:

Jika boleh, buat ungkapan XPath dinamik menggunakan bahasa hos seperti JavaScript:

<code class="javascript">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");</code>

Kaedah ini hanya menterjemah aksara yang diperlukan dalam rentetan carian, menjadikannya sesuai untuk mana-mana istilah carian.

Pertimbangan:

  • Kedua-dua kaedah gagal apabila rentetan carian mengandungi petikan tunggal.
  • Menggunakan elemen khas seperti untuk menandakan teks yang berkaitan boleh memudahkan pertanyaan XPath.

Atas ialah kandungan terperinci Bolehkah Pertanyaan XPath Menjadi Tidak Peka Huruf Menggunakan mengandungi()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn