清晰高效的XPath,不匹配任何元素

时间:2016-07-08 16:18:54

标签: xml xpath

我有一个接受一些XPath参数的库函数,对于其中一个我想提供一个不匹配任何元素的函数。

我目前正在使用*[false()],但我认为这非常有效(一个天真的实现可能会遍历所有元素)。

是否有一个至少在意图中明确(即没有匹配)但效率更高?

(表达式的类型必须是节点列表。)

3 个答案:

答案 0 :(得分:2)

文档父/..始终为空。

答案 1 :(得分:1)

我喜欢@ MaxToro的简洁回答(+1),但这是一个自我记录的替代方案:

/impossible-to-match[false()]

或者,更短:

/*[false()]

(通过为当前示例指定前导/,它将非常有效。)

答案 2 :(得分:0)

./self::*[not(self::*)]  

./self::*[not(.)]

基本上这要求一个与当前节点匹配的 xpath "./self::" ,同时不匹配当前节点 "[not(self::) ]" 或 "[not(.)]",这意味着它不会匹配任何内容。