2012-02-08 2 views
30

Я пытаюсь выбрать первый элемент в наборе результирующих узлов после выполнения запроса xpath.получение первого узла в наборе результатов xpath

Когда я делаю это:

//dl 

я получаю следующий результирующий набор:

[<dl>​…​</dl>​, <dl>​…​</dl>​] 

Как я могу получить первый? Ни одна из этих работ:

//dl[1] 
//dl[position()=1] 

Я выполняю это в веб-инспекторе Chrome.

ответ

54

Используйте следующее:

(//dl)[1] 

Скобки являются существенными. Вы хотите, чтобы первый узел был получен из //dl (а не из набора dl элементов, которые являются первым дочерним элементом их родителя (что и возвращает (без парнеров))).

Это легче увидеть, когда один понимает, что // представляет собой сокращенную (т.е. расширяется полностью) /descendant-or-self::node()/ так, что //dl[1] эквивалентно:

/descendant-or-self::node()/dl[1] 

... который более очевидно, не то, что вы хотите. Вместо этого вы ищете:

(/descendant-or-self::node()/dl)[1] 
+0

Я не знал, что это было возможно. какие другие примеры я могу сделать с (// dl)? – tipu

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