// * [local-name()=' element']和// *:element之间有什么区别?

时间:2015-12-11 08:55:34

标签: xpath

似乎在某些用例中使用表达式

//*[local-name()='element']

选择

以上
//*:element
换句话说,第一个表达式在更一般的层面上起作用,而第二个表达式似乎更具限制性。

这可能是什么原因?它似乎是一个命名空间问题,但我们无法弄明白。

1 个答案:

答案 0 :(得分:2)

node test *:element仅在XPath 2.0中有效。规范说:

  

节点测试也可以采用*:NCName形式。在这种情况下,对于本地名称与给定NCName匹配的步轴的主节点类型的任何节点,节点测试都为true,无论其名称空间或缺少名称空间。

所以它等同于*[local-name()='element']