Bonjour,
position() est une fonction XPath un peu particulière en ce sens qu'elle ne renvoie la position d'un noeud qu'au sein d'un contexte implicite.
Par exemple, dans cette expression XPath :
/document/section[position() = 3]
/document/section sélectionne tous les éléments <section> fils de <document>, l'ensemble des noeuds constitué par les <section> constitue donc le contexte dans lequel va s'évaluer le prédicat. Chacun des noeuds <section> va servir de noeud contextuel pour l'évaluation du prédicat (s'il y a 4 noeuds <section>, le prédicat va donc être évalué 4 fois), et position() renvoie la position qu'occupe le noeud contextuel dans le contexte.
Pour ton problème, position() n'est d'aucune utilité, il va donc falloir ruser. Il y a une imprécision dans ton énoncé : le noeud en cours d'évaluation rentre-t-il en compte dans la numération (ça semble être le cas), et non pas seulement les noeuds précédents ?
Partager