0

この質問は、XPath 式に関するものです。

Web ページ内の.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(...)それらのシーケンスではなく、任意の数の原子文字列のみを取ります。また
  • string-length(...)@Navin Rawat が提案したように、すべての @href に適用しますが、軸ステップで任意の関数を使用することは、XPath 2.0 の新機能です。

XPath 2.0 を使用している場合avg(...)ends-with(...)式を

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

XPath 1.0 に固執する必要がある場合は、以下の式を使用して URL を取得し、XPath 以外の平均を計算するだけです。


とにかく、あなたが提案した部分式は のような URL で失敗しますhttp://example.net/myfile.pdf.txtURLの末尾のみを比較します。

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

また、属性のパス ステップを逃したため、現在、リンク名の文字列の長さを平均化しようとしています。

于 2013-05-17T08:28:24.090 に答える