4.17. 匹配大小写无关的属性值

HTML 中,许多属性的值是大小写无关的,有的还允许首尾空格。如果想获取到所有这样的值,需要在 XPath 查询中使用一点技巧。

例 4.21. 获取 method 为 "POST" 或 "post" 的表单(form)

var postforms = document.evaluate(
	"//form[translate(@method, 'POST ', 'post')='post']",
	document,
	null,
	XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
	null);

本次 XPath 查询可以获取所有以 POST 方式提交的表单。首先,我们需要用 translate 函数将 method 属性的值中的字母大写变成小写。(XPath 2.0 有 lowercase 函数,但我还从来没用成功过。)其次,我们需要将首尾的空格去掉。我们可以将其整合到调用 translate 函数中,只要在第一个参数中加个额外的空格。因为在第二个参数中没有对应的字母,这样一来所有的空格就被去掉了。最后,我们就能将获得的属性值同 'post' 做比较。

实例

← 处理已渲染的页面
获取当前域名 →