【问题标题】:How to select nodes with longest text with xpath?如何使用 xpath 选择文本最长的节点?
【发布时间】:2018-01-07 14:37:32
【问题描述】:

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

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

似乎它在 xpath 2.0 中有效,但在 python lxml 中无效。

我对此不太确定。任何人都可以帮助更详细地解释吗?谢谢!

【问题讨论】:

  • 您应该发布您尝试过的相关代码,以及确切的错误消息。

标签: xpath lxml


【解决方案1】:

您的 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 中完成。

【讨论】:

  • 好的,python lxml 支持 XPath 2.0 吗?
  • 您可以尝试使用支持 XPath 3.1 的 Saxon/C 库。但除非您打算在您的应用程序中更广泛地使用它,否则这需要付出很多努力。
猜你喜欢
  • 2011-12-16
  • 2011-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-15
  • 2011-05-30
  • 1970-01-01
  • 2016-09-06
相关资源
最近更新 更多