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中文網其他相關文章!