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