2012-01-28 2 views
4

Пример:Вывод с XPath 1.0

<div class='known' name='unknown'> 

Как вернуть name значение атрибута («неизвестный») на основе известного значения class attribure с XPath 1.0?

В поисках ответа я обнаружил, что XPath 2.0 имеет инструмент для этого:

//div[@class='known']/@name/string() 

Но не могу найти XPath 1.0 аналогию

ответ

5

Использование:

string(//div[@class='known']/@name) 

Этот создает строковое значение атрибута nameпервого в d ocument order div, так что строковое значение его атрибута class равно "unknown".

Если //div[@class='known'] выбирает более одного div элемента, и вы хотите, чтобы значение атрибута name для к-го выбранного div, используйте:

string((//div[@class='known'])[$k]/@name) 

где $k должен быть замещена разыскиваемым целым числом, или в противном случае переменная $k должна быть в контексте оценки для выражения XPath.

+0

Спасибо. Есть ли способ вывода всех элементов? Я попытался с помощью 'string ((// div [@ class = 'known']) [*]/@ name), но он не работает – theta

+1

@zetah: Не с одним выражением XPath 1.0. Тем не менее, можно выбрать с одним выражением XPath 1.0 все элементы или все их атрибуты 'name'. Затем вывод может быть выполнен в цикле на языке программирования хоста. –

Смежные вопросы