Types de nœud XPath

Il existe sept types de nœuds dans XPath. Seul le matériel de référence sera abordé ici ; pour de plus amples informations sur les différents types de nœud, voir la précédente discussion sur le modèle de données XPath.

Le nœud racine  
 

Le nœud racine représente le répertoire racine de l'arborescence. Contrairement aux autres nœuds, il ne possède pas de parent. Ses enfants correspondent au nœud d'élément du document, ainsi qu'à tous les commentaires et instructions de traitement figurant en-dehors de l'élément du document. Le nœud racine ne possède pas de nom développé.

Nœuds d'élément  
 

Chaque élément du document XML original est représenté par un nœud d'élément. Le nom développé de l'élément correspond à son nom local associé à un espace de noms appliqué à l'élément. Vous pouvez accéder aux différentes parties du nom de l'élément à l'aide des fonctions name(), local-name() et namespace-uri(). Voici un élément d'un document XML :

<xyz:report xmlns:xyz="http://www.xyz.com/">

Les valeurs des trois fonctions de cet élément sont les suivantes :

name()
xyz:report

local-name()
report

namespace-uri()
http://www.xyz.com/

Nœuds d'attribut  
 

Les attributs des éléments du document XML deviennent des nœuds d'attribut XPath. Un attribut possède un nom développé, tout comme un nœud d'élément en possède un également. Les nœuds d'attribut d'un nœud d'élément donné représentent les attributs explicitement codés sur l'élément XML et tous les attributs définis avec des valeurs par défaut dans le fichier DTD.

Si on adopte une approche différente du Modèle d'Objet de Document (DOM), un nœud d'élément représente le parent de ses attributs, même si les attributs ne sont pas les enfants de l'élément. En d'autres termes, sélectionner tous les enfants d'un nœud d'élément ne sélectionne aucun des nœuds d'attribut dont le nœud d'élément peut disposer.

Nœuds de texte  
 

Les nœuds de texte contiennent simplement le texte d'un élément. Si le texte original du document XML contenait des références de caractère ou d'entité, elles sont résolues avant la création du nœud de texte XPath. De même, toute section CDATA existante apparaît comme un nœud de texte. Rien ne permet de savoir si une portion donnée d'un nœud de texte était initialement une référence de caractère ou d'entité ou bien une section CDATA.

Nœuds de commentaire  
 

Un nœud de commentaire est également très simple ; il contient du texte. Tout commentaire effectué dans le document source (excepté les commentaires du fichier DTD) se transforme en nœud de commentaire. Le texte du nœud de commentaire (renvoyé avec le test de nœud text()) contient tous les éléments figurant dans le commantaire, excepté la balise de début <!-- et la balise de fin -->.

Nœuds d'instruction de traitement  
 

Un nœud d'instruction de traitement comprend deux parties : un nom (renvoyé par la fonction name()) et une valeur de chaîne. La valeur de chaîne correspond à tous les éléments situés après le nom, y compris les espaces blancs mais non inclus le ?> qui ferme l'instruction de traitement.

Nœuds d'espace de noms  
 

Les nœuds d'espace de noms sont très rarement utilisés dans les feuilles de style XSLT ; ils sont principalement utilisés par le processeur XSLT. Il ne faut pas oublier que la déclaration d'un espace de noms (par exemple, xmlns:auth="http://www.authors.net"), même si elle représente techniquement un attribut de la source XML, se transforme en nœud d'espace de noms et non en nœud d'attribut. Les nœuds d'espace de noms sont disponibles aussi bien pour les préfixes d'espace de noms définis que pour tout espace de noms par défaut.