Ответ 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]