Подтвердить что ты не робот

Получение первого node в наборе результатов xpath

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

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

//dl

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

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

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

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

Я выполняю это в Chrome Web Inspector.

4b9b3361

Ответ 1

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

(//dl)[1]

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

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

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

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

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