0

这个问题与 XPath 表达式有关。

我想找到指向.pdf文件的网页中所有 URL 的平均长度。

到目前为止,我已经构建了以下表达式,但它不起作用:

sum(string-length(string(//a/@href[contains(., ".pdf")]))) div count(//a/@href[contains(., ".pdf")])

任何帮助将不胜感激!

4

2 回答 2

0

您将需要 XPath 2.0。

要计算字符串长度的总和,您将需要

  • @href需要一个所有s的串联字符串来应用string-lenght($string as xs:string)(它只允许单个字符串作为参数),但concat(...)只接受任意数量的原子字符串,而不是这些字符串的序列;或者
  • 正如@Navin Rawat 建议的那样,应用于string-length(...)每个@href - 但是在轴步骤中使用任意函数是XPath 2.0 的一个新特性。

avg(...)如果使用 XPath 2.0 ,有一些函数ends-with(...)可以帮助您将表达式简化为

avg(//a/@href[ends-with(., '.pdf')]/string-length())

如果您必须坚持使用 XPath 1.0,您所能做的就是使用下面的表达式来获取 URL 并计算 XPath 之外的平均值。


无论如何,您提出的子表达式将在诸如http://example.net/myfile.pdf.txt. 仅比较URL 的结尾

//a[@href[substring(., string-length(.) - 3) = '.pdf']]/@href

而且您错过了属性的路径步骤,因此您现在一直在尝试平均链接名称的字符串长度。

于 2013-05-17T08:28:24.090 回答
-1

请输入如下内容:

sum(//a/@href[contains(.,'.pdf')]/string-length()) div count(//a/@href[contains(.,'.pdf')])
于 2013-05-17T07:27:41.057 回答