【发布时间】:2018-01-07 14:37:32
【问题描述】:
我正在尝试通过以下方式查询具有最长文本的锚点:
//a[not(string-length(.) < ancestor::li//a/string-length(.))]
似乎它在 xpath 2.0 中有效,但在 python lxml 中无效。
我对此不太确定。任何人都可以帮助更详细地解释吗?谢谢!
【问题讨论】:
-
您应该发布您尝试过的相关代码,以及确切的错误消息。
我正在尝试通过以下方式查询具有最长文本的锚点:
//a[not(string-length(.) < ancestor::li//a/string-length(.))]
似乎它在 xpath 2.0 中有效,但在 python lxml 中无效。
我对此不太确定。任何人都可以帮助更详细地解释吗?谢谢!
【问题讨论】:
您的 XPath 2.0 表达式实际上会在同一 li 中找到比任何其他 a 元素长的所有 a 元素;它不会选择任何不在li 中的a 元素。
一个更好的 XPath 2.0 解决方案可能是
for $m in max(//a/string-length()) return //a[string-length(.)=$m]
我认为它不能在 XPath 1.0 中完成。
【讨论】: