Comment puis-je ignorer le premier élément et obtenir le reste des éléments?
<ul>
<li><a href="#">some link</a></li>
<li><a href="#">some link 2</a></li>
<li><a href="#">link i want to find</a></li>
</ul>
Merci
si vous souhaitez ignorer le "premier" élément uniquement:
//li[position()>1]
or
(//a)[position()>1]
si vous ne voulez que le dernier (comme votre exemple semble le suggérer):
//li[last()]
or
(//a)[last()]
Vous pouvez utiliser position()
pour sauter le "premier", mais selon l'élément qui vous intéresse et le contexte, vous aurez peut-être besoin d'une légère variation sur votre XPATH.
Par exemple, si vous vouliez adresser tous les éléments li
et obtenir tout sauf le premier, vous pourriez utiliser:
//li[position()>1]
et cela fonctionnerait comme prévu, renvoyant tous les éléments li
à l'exception du premier.
Cependant, si vous souhaitez traiter tous les éléments a
, vous devez modifier légèrement le XPATH. Dans le contexte de l'expression //a[position()>1]
chacun des éléments a
aura une position()
de 1 et last()
sera évalué à vrai. Ainsi, il retournerait toujours tous les a
et ne sauterait pas le premier.
Vous devez encapsuler l'expression qui sélectionne a
entre parenthèses pour les regrouper dans un ensemble de nœuds, puis appliquer le filtre de prédicat sur la position.
(//a)[position()>1]
Alternativement, vous pouvez également utiliser une expression comme celle-ci:
//a[preceding::a]
Cela trouvera tous les éléments a
sauf le premier (puisqu'il n'y a pas de a
précédant le premier).