Partager via


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

./first-name

Tous les éléments <first-name>. Notez que cette expression est équivalente à l'expression qui suit.

first-name

Tous les éléments <first-name>.

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

author[1]

Premier élément <author>.

author[first-name][3]

Troisième élément <author> ayant un élément enfant <first-name>.

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

x/y[1]

Premier <y> à l'intérieur de chaque <x>.

(x/y)[1]

Premier <y> de tout l'ensemble d'éléments <y> à l'intérieur d'éléments <x>.

x[1]/y[1]

Premier <y> à l'intérieur du premier <x>.

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

book[last()]

Dernier élément <book>.

book/author[last()]

Dernier élément <author> à l'intérieur de chaque élément <book>.

(book/author)[last()]

Dernier élément <author> de tout l'ensemble d'éléments <author> à l'intérieur d'éléments <book>.

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

(book/author)

Tous les éléments <author> qui sont des éléments enfants de tout élément <book> du nœud de contexte actuel.

author[(degree or award) and publication]

Tous les éléments <author> qui contiennent au moins un élément <degree> ou <award> et au moins un élément <publication>.

Voir aussi

Référence

Exemples de XPath

Concepts

Exemple de fichier XML pour la syntaxe XPath (inventory.xml)