是。可能,但不漂亮。
/html/body//text()[
contains(
translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),
'test'
)
]
这适用于事先知道字母的搜索字符串。添加您希望看到的所有带重音符号的字符。
如果可以的话,请通过其他方式标记您感兴趣的文本,例如<span>
在构建HTML时将其包含在具有特定类的文本中。与元素文本中的子字符串相比,使用XPath定位这些东西要容易得多。
如果这不是一种选择,则可以让JavaScript(或用于执行XPath的任何其他宿主语言)帮助您构建动态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");
// -> "//text()[contains(translate(., 'TEST', 'test'), 'test')]"