该问题涉及XPath表达式。XPath表达式
我想查找网页中所有网址长度的平均值,即指向.pdf文件。
到目前为止我已经构建下面的表达式,但它不工作:
总和(字符串长度(串(// A/@ HREF [含有( “.PDF”)] )))div count(// a/@ href [contains(。,“.pdf”)])
任何帮助将不胜感激!
该问题涉及XPath表达式。XPath表达式
我想查找网页中所有网址长度的平均值,即指向.pdf文件。
到目前为止我已经构建下面的表达式,但它不工作:
总和(字符串长度(串(// A/@ HREF [含有( “.PDF”)] )))div count(// a/@ href [contains(。,“.pdf”)])
任何帮助将不胜感激!
您需要的XPath 2.0。
为计算字符串长度的总和,你需要或者
@href
s的连接字符串适用于string-lenght($string as xs:string)
(只允许一个单一的字符串作为参数),但concat(...)
只需要任意数量的atomar字符串,而不是这些序列;或string-length(...)
作为@Navin的每个@href应用 - 但在轴步骤中使用任意函数是XPath 2.0的一项新功能。如果使用XPath 2.0,也有功能avg(...)
和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
你错过了属性的路径一步,所以你一直在努力,现在以平均链接名称的字符串长度。
谢谢你的回答! –
如果这回答了您的问题,您应该将其标记为(请查看每个答案左侧的复选标记)。其他用户要么回答你的问题,要么遇到同样的问题,可以很容易地识别解决方案。 –
请把这样的:
sum(//a/@href[contains(.,'.pdf')]/string-length()) div count(//a/@href[contains(.,'.pdf')])
它不起作用!感谢您的关注! –
这是XPath 2.0,总结了链接文本的字符串长度而不是URL,并且在其名称的某处出现非PDF文件_containing_'.pdf'失败。 –
当我找到正确的XPath 2.0工具使用时,我会再次尝试表达式。谢谢你们! –
您正在寻找哪个XPATH版本1.0或2.0 –
XPath版本不是问题:如果有人可以,他可以在两个版本中解决问题。暂时我正在使用FirePath测试表达式(在Firefox中)。 –
什么意思_XPath版本不是问题_。我不认为这是1.0版本的解决方案。另外请记住,如果我没有记错的话,FirePath甚至不支持完整版本1.0(或者至少有总和问题)。 –