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中文网其他相关文章!