Ответ 1
/descendant::dupe_node[1]
//dupe_node[1]
, как правило, неверен, хотя в этом конкретном случае он дает идентичный результат. См. документы:
Путь местоположения //para [1] не означает то же, что и путь/потомок местоположения:: para [1]. Последний выбирает первый элемент-абзац-потомка; первый выбирает все элементы-потомки, которые являются первыми пара детьми своих родителей.
Учитывая следующий XML:
<foo>
<bar/>
<foo>
<bar/>
</foo>
</foo>
//bar[1]
создаст два узла, потому что оба столбца являются первыми детьми их соответствующих родителей.
/descendant::bar[1]
даст только один node, который является первым из всех баров в документе.