Xpath表达式解释

时间:2016-03-21 08:19:58

标签: xpath

有人可以解释一下下面的Xpath表达式是什么意思吗?

  1. //node()[not(*)][not(normalize-space())]
  2. //node()[not(*)][not(normalize-space())][not(boolean(@Key))]
  3. //node()[not(text())]
  4. 我理解//node()表示任何节点,但不确定使用以下表达式。

2 个答案:

答案 0 :(得分:4)

//node()[not(*)][not(normalize-space())]

文档中任何位置的所有元素,文本,注释和处理指令节点,它们没有子元素节点且其字符串值为空或完全由空格组成

//node()[not(*)][not(normalize-space())][not(boolean(@Key))]

如上所述,附加条件是没有@Key属性。最后一个谓词写得很糟糕:它可以缩短为[not(@Key)]而不改变其含义。

//node()[not(text())]

文档中任何位置没有子文本节点的所有元素,文本,注释和处理指令节点。

答案 1 :(得分:0)

更新(感谢@Michael Kay评论)
第一个:
//node()文档中的所有节点(包括文本,注释和处理指令,但不包括属性)
 [not(*)]没有任何子元素节点
[not(normalize-space())]没有任何文本内容(除了空格)。

第二个: 与第一个相同,但另外一个:

[not(boolean(@Key))]节点没有属性Key 更新: 对于第三个看看e.g. this 在您的示例中,这也将忽略具有任何文本内容(甚至是空格)的节点