получение первого узла в наборе результатов xpath - PullRequest
33 голосов
/ 08 февраля 2012

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

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

//dl

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

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

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

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

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

1 Ответ

60 голосов
/ 08 февраля 2012

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

(//dl)[1]

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

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

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

... что, очевидно, не то, что вы хотите. Вместо этого вы ищете:

(/descendant-or-self::node()/dl)[1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...