Ensembles XPath
Les collections retournées par des requêtes XPath conservent l'ordre, la hiérarchie et l'identité des documents, dans la mesure où ceux-ci sont définis. En d'autres termes, une collection d'éléments est retournée dans l'ordre du document, sans répétition d'éléments. Puisque, par définition, les attributs ne sont pas ordonnés, aucun ordre implicite n'existe dans les attributs retournés pour un élément spécifique.
La collection de tous les éléments ayant un certain nom de balise est exprimée par le nom même de la balise. On peut qualifier cela en montrant que les éléments sont sélectionnés dans le contexte actuel à l'aide d'un point et d'une barre oblique (./
), mais le contexte actuel est utilisé par défaut et ne doit donc pas être noté explicitement.
Exemples
Expression | Référence |
---|---|
|
Tous les éléments |
|
Tous les éléments |
Indexation dans une collection
Les expressions XPath facilitent l'interrogation d'un nœud spécifique dans une collection de nœuds. Il suffit d'inclure l'ordinal de l'index entre des crochets. Cet ordinal est de base 1 (le premier élément est le numéro 1).
Les caractères entre crochets ([]
) ont une priorité supérieure à celle des caractères entre barres obliques (/
et //
). Pour plus d'informations, consultez Opérateurs et caractères spéciaux
Exemples
Expression | Référence |
---|---|
|
Premier élément |
|
Troisième élément |
Notez que les index sont relatifs à l'ensemble soumis au filtre. Considérez par exemple les données suivantes.
<x>
<y/>
<y/>
</x>
<x>
<y/>
<y/>
</x>
Le tableau suivant indique comment sélectionner des éléments <x>
et <y>
spécifiques.
Expression | Référence |
---|---|
|
Premier |
|
Premier |
|
Premier |
Les exemples ci-dessus sont de simples références à des collections XPath qui utilisent des valeurs par défaut implicites, telles que l'axe child::
. Pour cet axe, la collection de nœuds enfants est indexée dans l'ordre normal du document.
Pour les autres axes, tels que ancestor::
, utilisez explicitement le nom de l'axe dans votre expression XPath. Pour cet axe, la collection d'ancêtres est indexée dans l'ordre inverse du document. Considérez l'exemple suivant du tableau ci-dessus :
x/y[1]
Cette expression est équivalente à l'expression suivante :
x/child::y[1]
Ces deux expressions signifient « pour chaque élément <x>
, sélectionner le premier élément enfant appelé <y>
** ».
L'exemple suivant utilise la même syntaxe.
x/ancestor::y[1]
Cet exemple signifie « pour chaque élément <x>
, sélectionner le premier élément ancêtre (dans l'ordre inverse du document) appelé <y>
». La syntaxe est la même, mais l'ordre est inversé.
Recherche du dernier élément d'une collection
La fonction last() retourne la valeur True pour le dernier élément d'une collection. Notez que last
se rapporte au nœud parent.
Exemples
Expression | Référence |
---|---|
|
Dernier élément |
|
Dernier élément |
|
Dernier élément |
Regroupement
Des parenthèses peuvent permettre de regrouper des opérateurs de collection à des fins de clarté ou lorsque l'ordre normal de priorité ne convient pas pour exprimer une opération. Les opérateurs de regroupement peuvent être utilisés dans n'importe quelle expression de filtre (prédicat), telle que author[(degree or award)and publication]
. Ils peuvent également être utilisés dans l'expression de pas de niveau supérieur, telle que (book|magazine)
ou (author/degree | book/award)
. Ils ne peuvent pas être appliqués à des expressions de pas de niveau inférieur. Par exemple, author/(degree | award)
n'est pas valide.
Exemples
Expression | Référence |
---|---|
|
Tous les éléments |
|
Tous les éléments |
Voir aussi
Référence
Concepts
Exemple de fichier XML pour la syntaxe XPath (inventory.xml)