Après 24h d'intense réflexion sur le sujet, j'en suis venu à me dire que c'est impossible.
En effet : le contexte de la requete xpath change pour chaque prédicat (= [expression entre crochet]). cad il passe sur le noeud sur lequel on applique le prédicat. Ceci implique qu'il est impossible de retrouver le noeud définissant le contexte originel dans un prédicat .
par exemple :
./preceding-sibling::a[position() < ./following-sibling::b/position() ]
n'est pas une syntaxe correcte car position() ne peut être appliqué qu'au noeud courrant (cad le 'a', et pas au 'b').
.... et je ne vois pas de solution alternative en xpath .....
Bon bah étant donné que je ne peux pas agir en aval sur le document XML, qui est issu d'une normalisation, je vais faire un traitement spécifique en DOM pour résoudre ce cas épineux. Poil au yeux.
Partager