有两个 XPath 表达式:
//LI/A[normalize-space()="fullscreen"]
//LI/A["fullscreen"]
据我了解,normalize-space()
用于 trim 字符串,如 documentation 中所述。 。那么这两个表达式应该具有相同的含义吗?
但是可以评估第一个以将元素定位在 this web page 中作者:
document.evaluate('//LI/A[normalize-space()="fullscreen"]', document).iterateNext();
,而第二个将定位不同的元素。
它们有什么区别?
最佳答案
第二个表达式实际上没有多大意义。您设置的过滤 a
元素的唯一条件是“fullscreen”字符串,该字符串的计算结果始终为 true。换句话说,//LI/A["fullscreen"]
相当于 //LI/A
。
您可能想根据全屏
检查元素的字符串值:
//LI/A[. = "fullscreen"]
还需要注意的是,当不带参数调用 normalize-space()
时,它会自动使用当前节点的字符串值作为参数 。元素的节点字符串值为 all text nodes within the element concatenated .
关于javascript - 这两个 XPath 表达式有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43536334/