在某些用例中,表达式
//*[local-name()='element']
选择多于
//*:element
或者,换言之,第一种表达方式在更普遍的层面上起作用,而第二种表达方式似乎更具限制性。
这可能是什么原因?这似乎是一个名称空间问题,但我们还没有弄清楚。
节点测试*:element
仅在XPath 2.0中有效。说明书上写着:
节点测试的形式也可以是*:NCName。在这种情况下,节点测试适用于步骤轴的主节点类型的任何节点,其本地名称与给定的NCName匹配,无论其名称空间或缺少名称空间。
所以它相当于*[local-name()='element']
。