XPath - Valeur textuelle

À chaque noeud de l'arbre correspond une valeur textuelle. Certains noeuds ont une valeur textuelle intrinsèque ; pour d'autres, la valeur textuelle associée est calculée à partir des noeuds descendants. Les noeuds attribut et texte font partie du premier cas. La valeur textuelle d'un noeud élément est la concaténation de la valeur textuelle de ses descendants pris dans l'ordre d'apparition du document.
Dans l'exemple suivant,
<chapitre>
    <titre>Valeur textuelle</titre>
    <section numero="1">
        A chaque noeud de l'arbre correspond une valeur textuelle.
    </section>
    <section numero="2">
        La valeur textuelle d'un noeud élément est la concaténation de la valeur textuelle de ses descendants.
    </section>
</chapitre>
la valeur textuelle de l'élément chapitre est la concaténation de la valeur textuelle de ses 3 enfants, i.e. :
Valeur textuelle A chaque noeud de l'arbre correspond une valeur textuelle. La valeur textuelle d'un noeud élément est la concaténation de la valeur textuelle de ses descendants.
(les espaces blancs ne sont pas représentés).
Remarque : La valeur des attributs numero des éléments section n'apparaît pas dans la valeur textuelle de l'élément chapitre. En effet, bien que ces attributs aient une valeur textuelle (resp. "1" et "2"), ils ne font partie des enfants d'aucun élément (nous avons déjà mentionné le caractère non symétrique de la relation de parenté entre un élément et ses attributs).


text() et string()
Il ne faut pas confondre le nodetest text() et la fonction string(). text() sélectionne, parmi un nodeset donné, les noeuds de type texte. string() est une fonction qui renvoie la valeur textuelle d'un noeud.

Exemples : évaluation d'expressions avec <oXygen/>
   L'expression //text() (qui est un raccourci pour "tous les descendants de la racine qui sont un noeud texte") sélectionne deux noeuds :

 
   La valeur textuelle de la racine est obtenue en évaluant l'expression string(/).
 
   Il faut être vigilant lors de l'utilisation de //text(). Dans le cas ci-contre, nous avons repris le premier exemple en indentant le code XML. La même expression XPath nous donne ici un nodeset composé de 3 éléments. En effet, le retour à la ligne et la tabulation (surlignés à gauche en bleu-clair) insérés entre les balises <chapitre> et <section> sont considérés comme faisant partie d'un noeud texte :

Précédent... ] Sommaire... ]