XPath 不區分大小寫的contains()
XPath 不區分大小寫的contains()在XSLT 或其他DOM 遍歷應用程式中,透過區分大小寫的字串比較執行XPath 查詢可以受到限制。然而,在 XPath 1.0 中實作不區分大小寫的 contains() 功能是可能的。
1。基於翻譯的方法(XPath 1.0)/html/body//text()[ contains( translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'test' ) ]
要符合字串的區分大小寫和不區分大小寫的變體,請使用translate() 函數:
/html/ body/ /文字()[ 包含( 譯(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), '測試' ) ]此方法有效地將所有大寫字母轉換為小寫字母,從而實現不區分大小寫的比較。但是,它需要了解預期的字元集。
2。 JavaScript 輔助的動態XPath 產生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");
如果可以操作XPath 表達式,您可以使用JavaScript 將搜尋字串動態替換為其大寫和小寫變體:函數xpathPrepare(xpath, searchString) { 返回 xpath.replace("$u", searchString.toUpperCase()) .replace("$l", searchString.toLowerCase()) .replace("$s", searchString.toLowerCase()); } xp = xpathPrepare("//text()[contains(translate(., '$u', '$l'), '$s')]", "Test");此方法處理搜尋包含任意字元(包括單引號)的字串。
警告:
如果涉及複雜/大字串操作,這些技術可能無法達到最佳效果。如果可能,請考慮其他解決方案,例如儲存具有已知字元集的字串或採用 XPath 2.0,它本身支援不區分大小寫的字串比較。免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3