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