Share via


Chemins de localisation

Un chemin de localisation est une expression XPath utilisée pour sélectionner une collection de nœuds par rapport au nœud de contexte. L'évaluation d'une expression de chemin de localisation résulte en un ensemble de nœuds contenant les nœuds spécifiés par le chemin de localisation. De manière récursive, un chemin de localisation peut contenir des expressions utilisées pour filtrer des collections de nœuds.

Du point de vue de la syntaxe, un chemin de localisation se compose d'une ou de plusieurs étapes de localisation, séparées par des barres obliques (/) :

locationstep/locationstep/locationstep

Chaque étape de localisation sélectionne à son tour une collection de nœuds par rapport au nœud de contexte, c'est-à-dire le nœud sélectionné par l'étape de localisation précédente. Un chemin de localisation exprimé de cette manière est un chemin de localisation relatif. Un chemin de localisation absolu part de l'élément racine :

/locationstep/locationstep/locationstep

Dans un chemin de localisation, les étapes de localisation sont évaluées de gauche à droite. L'étape la plus à gauche sélectionne une collection de nœuds par rapport au nœud de contexte. Ces nœuds deviennent alors le contexte utilisé pour traiter l'étape de localisation suivante. Ce processus de traitement des étapes et de mise à jour du nœud de contexte se répète jusqu'à ce que toutes les étapes de localisation aient été traitées.

Un chemin de localisation peut être abrégé ou non.

Dans un chemin de localisation non abrégé, les étapes de localisation adoptent la syntaxe suivante :

axis::node-test[predicate]

Dans cette syntaxe, axis spécifie la relation entre les nœuds sélectionnés par l'étape de localisation et le nœud de contexte ; node-test spécifie le type de nœud et le nom développé des nœuds sélectionnés par l'étape de localisation ; predicate est une expression de filtre qui affine la sélection des nœuds dans l'étape de localisation. Les prédicats sont facultatifs. Dans ce cas, une étape de localisation se compose uniquement de axis:: et node-test. Le tableau suivant donne quelques exemples.

Chemin de localisation non abrégé Description

child::para[last()]

Sélectionne le dernier élément <para> du nœud de contexte.

parent::para

Sélectionne l'élément <para> qui est parent du nœud de contexte.

child::text()

Sélectionne tous les nœuds de texte enfants du nœud de contexte.

child::div/child::para

Sélectionne les éléments <para> enfants de l'élément <div> qui est un enfant du nœud de contexte.

Dans un chemin de localisation abrégé, l'axe, axis::, n'est pas exprimé explicitement dans les étapes de localisation, mais implicitement par une série de raccourcis. Le tableau suivant donne quelques exemples.

Chemin de localisation abrégé Description

para

Sélectionne les éléments <para> du nœud de contexte.

../para

Sélectionne l'élément <para> qui est parent du nœud de contexte.

text()

Sélectionne tous les nœuds de texte enfants du nœud de contexte.

./div/para

Sélectionne les éléments <para> enfants des éléments <div> enfants du nœud de contexte.

Voici une synthèse de certaines abréviations :

Non abrégé Abrégé

child::*

*

attribute::*

@*

/descendant-or-self::node()

//

self::node()

.

parent::node()

..

Dans cette section

Les rubriques suivantes décrivent en détail la syntaxe et l'utilisation des parties des chemins de localisation.