Partager via


Tests de nom

Un test de nom est la forme la plus répandue de test de nœud, car il vous permet de spécifier de manière explicite le nom des nœuds à sélectionner. Toutefois, spécifier uniquement un nom de nœud ne permet pas automatiquement de sélectionner le nœud approprié étant donné qu'une arborescence de document peut avoir différents types de nœuds dont le nom est identique. Pour sélectionner le nœud approprié, un test de nom sélectionne uniquement les nœuds dont le nom correspond au nom spécifié et dont le type de nœud correspond au type de nœud principal de l'axe spécifié.

Le tableau suivant reprend le type de nœud principal de divers axes.

Axe Type de nœud principal

Tout autre axe que attribute:: ou namespace:: (autrement dit, un axe qui peut contenir des éléments)

element

attribute

attribute

namespace

namespace

Le nom spécifié dans un test de nom peut être de l'un des trois types suivants : un astérisque (*), un QName ou l'expression NCName:*. Le tableau suivant montre des exemples de la manière dont chacun de ces types de noms fonctionne en combinaison avec l'axe spécifié pour rechercher une collection de nœuds particulière.

Nom Retourne Exemple

* (astérisque)

True pour chaque nœud du type de nœud principal.

ancestor::* sélectionne tous les ancêtres du nœud de contexte.

attribute::* sélectionne tous les attributs du nœud de contexte.

namespace::* sélectionne tous les espaces de noms du nœud de contexte.

QName

True pour un nœud du type de nœud principal dont le nom développé est identique au nom développé spécifié par le nom qualifié (QName).

child::para sélectionne tous les nœuds d'éléments <para> qui sont les enfants du nœud de contexte. Si le nœud de contexte n'a pas d'enfants <para>, il sélectionne une collection de nœuds vide.

NCName:*

True pour chaque nœud du type principal dont le nom développé comprend l'URI d'espace de noms auquel s'étend le NCName, quel que soit le nom local.

child::ns:* Sélectionne tous les nœuds d'élément enfant qui sont dans l'espace de noms possédant le préfixe ns.

Notes

Si le test de nœud est un nom qualifié (QName), XPath doit tout d'abord développer le nom qualifié QName en fonction des déclarations d'espaces de noms de contexte du fichier XML. Ce processus de développement est identique à celui des noms d'éléments au niveau des balises de début et de fin, excepté qu'il n'utilise pas l'espace de noms par défaut déclaré à l'aide de xmlns. Si le nom qualifié (QName) n'a pas de préfixe, XPath recherche les nœuds dont les noms locaux correspondent au nom qualifié (QName) donné et dont l'URI d'espace de noms est null. Une erreur se produit si le préfixe du nom qualifié ne correspond à aucune des déclarations d'espaces de noms du fichier.

Si le test de nœud est NCName:*, XPath développe le NCName de la même manière qu'il développerait le préfixe d'un nom qualifié. De la même manière, une erreur survient si la partie NCName ne correspond à aucun préfixe contenu dans les déclarations d'espaces de noms de contexte du fichier.

Voir aussi

Référence

Tests de nœuds
Tests de type de nœud
Tests d'instructions de traitement ciblées