Bagaimana untuk Mencapai Kefungsian Case-Insensitive contains() dalam XPath 1.0?

Barbara Streisand
Lepaskan: 2024-10-23 01:17:30
asal
607 orang telah melayarinya

How to Achieve Case-Insensitive contains() Functionality in XPath 1.0?

XPath's Case-Insensitive contains()

Dalam XSLT atau aplikasi merentasi DOM lain, melakukan pertanyaan XPath dengan perbandingan rentetan sensitif huruf besar boleh mengehadkan. Walau bagaimanapun, mencapai fungsi tidak sensitif huruf besar dan kecil mengandungi() dalam XPath 1.0 adalah mungkin.

1. Kaedah Berasaskan Terjemahan (XPath 1.0)

Untuk memadankan kedua-dua variasi sensitif huruf besar dan huruf kecil bagi rentetan, gunakan fungsi translate():

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

Kaedah ini menterjemahkan semua huruf besar kepada huruf kecil dengan berkesan, membolehkan perbandingan tidak sensitif huruf besar. Walau bagaimanapun, ia memerlukan pengetahuan tentang set watak yang diharapkan.

2. Penjanaan XPath Dinamik Berbantukan JavaScript

Jika memanipulasi ungkapan XPath adalah mungkin, anda boleh menggunakan JavaScript untuk menggantikan rentetan carian secara dinamik dengan varian atas dan huruf kecilnya:

<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>
Salin selepas log masuk

Ini kaedah mengendalikan rentetan carian dengan aksara arbitrari, termasuk petikan tunggal.

Awas: Teknik ini mungkin tidak berfungsi secara optimum jika operasi rentetan kompleks/besar terlibat. Jika boleh, pertimbangkan penyelesaian lain seperti menyimpan rentetan dengan set aksara yang diketahui atau menggunakan XPath 2.0, yang secara asli menyokong perbandingan rentetan tidak sensitif huruf besar-besaran.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Kefungsian Case-Insensitive contains() dalam XPath 1.0?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!