Toutes ces références peuvent être affinées selon le modèle chemin[condition] pour n'obtenir que les noeuds pointé par "chemin" qui répondent à la condition donnée.
Les conditions peuvent s'appuyer sur des fonctions dont
- position() qui retourne l'indice du noeud
- last() qui retourne l'indice du dernier noeud
sur les valeurs des attributs via
et les opérateurs
- or, and, =, !=, <=, <, >=, >
On peut donc avoir des expressions du genre
- ./ssniveau[position()<3] pour avoir les 2 premiers sous niveaux nommé "ssniveau"
- /ssracine[position()=last()] pour avoir le dernier élément "ssracine"
- ./ssniveau[attribute::nomattribut="nomcherche"] pour avoir ceux ayant nomattribut="nomcherche"
- ./[ssniveau or ssniveau2] pour avoir les élément nommés "ssniveau" ou "ssniveau2"
Ce qui peut s'écrire de façon abrégée
- /ssracine[last()] pour avoir le dernier élément "ssracine"
- ./ssniveau[@nomattribut="nomcherche"] pour avoir ceux ayant nomattribut="nomcherche"