如何使用 xpath select 具有最长文本的节点?

How to select nodes with longest text with xpath?

我正在尝试通过以下方式查询具有最长文本的锚点:

//a[not(string-length(.) < ancestor::li//a/string-length(.))]

它似乎适用于 xpath 2.0 但不适用于 python lxml。

这个我不太确定。谁能帮忙详细解释一下?谢谢!

您的 XPath 2.0 表达式实际上找到了比同一 li 中任何其他 a 元素长的所有 a 元素;它不会 select 不在 li.

内的任何 a 元素

更好的 XPath 2.0 解决方案可能是

for $m in max(//a/string-length()) return //a[string-length(.)=$m]

我不认为它可以在 XPath 1.0 中完成。