0
看来,在某些usecases表达// * [local-name()='element']和// *:element?之间的区别是什么?
//*[local-name()='element']
选择多于
//*:element
或,换句话说,第一个表达式适用于更一般的电平,而第二个似乎工作更具限制性。
这可能是什么原因?这似乎是一个命名空间问题,但我们还没弄明白。
看来,在某些usecases表达// * [local-name()='element']和// *:element?之间的区别是什么?
//*[local-name()='element']
选择多于
//*:element
或,换句话说,第一个表达式适用于更一般的电平,而第二个似乎工作更具限制性。
这可能是什么原因?这似乎是一个命名空间问题,但我们还没弄明白。
node test*:element
仅在XPath 2.0中有效。规范说:
节点测试也可以具有*:NCName的形式。在这种情况下,节点测试对于本地名称与给定的NCName匹配的步进轴的主节点种类的任何节点都成立,而不管其名称空间或缺少名称空间。
所以相当于*[local-name()='element']
。
您能否提供示例XML来演示此问题中描述的行为?就我所见,两种表达方式都是相同的。只有后者在XPath 1.0中不受支持 – har07
这可能已经是问题的解决方案。根据环境和各种组件,可能会出现某处使用XPath 1.0的情况。谢谢你的提示! –