我有一个接受一些XPath参数的库函数,对于其中一个我想提供一个不匹配任何元素的函数。
我目前正在使用*[false()]
,但我认为这非常有效(一个天真的实现可能会遍历所有元素)。
是否有一个至少在意图中明确(即没有匹配)但效率更高?
(表达式的类型必须是节点列表。)
答案 0 :(得分:2)
文档父/..
始终为空。
答案 1 :(得分:1)
我喜欢@ MaxToro的简洁回答(+1),但这是一个自我记录的替代方案:
/impossible-to-match[false()]
或者,更短:
/*[false()]
(通过为当前示例指定前导/
,它将非常有效。)
答案 2 :(得分:0)
./self::*[not(self::*)]
./self::*[not(.)]
基本上这要求一个与当前节点匹配的 xpath "./self::" ,同时不匹配当前节点 "[not(self::) ]" 或 "[not(.)]",这意味着它不会匹配任何内容。