首页 > web前端 > js教程 > 正文

如何在 XPath 1.0 中实现不区分大小写的 contains() 功能?

Barbara Streisand
发布: 2024-10-23 01:17:30
原创
607 人浏览过

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

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!