首頁 >web前端 >js教程 >如何在 XPath 1.0 中實作不區分大小寫的 contains() 功能?

如何在 XPath 1.0 中實作不區分大小寫的 contains() 功能?

Barbara Streisand
Barbara Streisand原創
2024-10-23 01:17:30685瀏覽

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

XPath 不區分大小寫的contains()

在XSLT 或其他DOM 遍歷應用程式中,透過區分大小寫的字串比較執行XPath 查詢可以受到限制。但是,在 XPath 1.0 中實作不區分大小寫的 contains() 功能是可能的。

1.基於翻譯的方法(XPath 1.0)

要匹配字串的區分大小寫和不區分大小寫的變體,請使用translate()函數:

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

此方法有效地將所有大寫字母轉換為小寫字母,從而實現不區分大小寫的比較。但是,它需要了解預期的字元集。

2. JavaScript 輔助的動態XPath 產生

如果可以操作XPath 表達式,您可以使用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>

This方法處理帶有任意字元的搜尋字串,包括單引號。

警告:如果涉及複雜/大字串操作,這些技術可能無法最佳執行。如果可能,請考慮其他解決方案,例如儲存具有已知字元集的字串或採用 XPath 2.0,它本身支援不區分大小寫的字串比較。

以上是如何在 XPath 1.0 中實作不區分大小寫的 contains() 功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn