Вам понадобится XPath 2.0.
Для вычисления суммы длин строк, вам нужно будет либо
- нужна каскадная строка всех
@href
с применить к string-lenght($string as xs:string)
(который позволяет только одну строки в качестве параметра), но concat(...)
только принимает произвольное число атомных строк, а не их последовательность; или
- применять
string-length(...)
на каждом @href как @Navin Rawat, но использовать произвольные функции в шагах оси - это новая функция 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.txt
. Только сравнить конец URL:
//a[@href[substring(., string-length(.) - 3) = '.pdf']]/@href
И вы пропустили шаг пути для атрибута, так что вы пытались в среднем длину строки названия ссылок прямо сейчас.
Какая версия XPATH вы ищете 1.0 или 2.0 –
Версия XPath не является проблемой: если кто-то может, он может решить проблему в обеих версиях. На мгновение я тестирую выражение, используя FirePath (в Firefox). –
Что должно означать, что версия _XPath не является проблемой. Я не думаю, что есть решение для этого с версией 1.0. Также имейте в виду, что Firepath даже не поддерживает полную версию 1.0 (или, по крайней мере, имеет проблемы с суммой), если я правильно помню. –