Gestion des caractères d'espacement en XSLT

Un document XML peut contenir des caractères d’espacement (blancs, tabulations, sauts de ligne) pour des raisons de présentation. Selon les circonstances, on peut vouloir préserver ou supprimer ces espaces lors d’une transformation XSLT.

Suppression/préservation des nœuds textuels « vide »

Un document XML contient généralement entre les nœuds éléments de nombreux nœuds textuels ne contenant que des blancs, des tabulations ou des sauts de ligne. Ces nœuds textuels peuvent être sémantiquement important, comme dans le cas de contenu mixte. Dans d'autre cas, ces nœuds peuvent être ignorés. Lors de la lecture du document d’entrée par le moteur XSLT, les nœuds textuels ne contenant que des espaces (#x20, #x9, #xD ou #xA) peuvent être supprimés (ils doivent l‘être d’après la recommandation, pas toujours en réalité).

Les éléments de haut niveau <xsl:strip-space> et <xsl:preserve-space> permettent de modifier ce comportement par défaut.

Voir par exemple cette feuille de style appliquée à ce fichier XML.

« Normalisation » des espaces dans les noeud textuels : normalize-space()

Dans l’exemple suivant :

<nom>
        A.
        Halperin
     </nom>

la valeur du noeud texte fils de d'élément nom est (_ correspond à un espace,↲ à un saut de ligne) :

↲
________A._↲
________Halperin↲
______

<xsl:value-of select="normalize-space(nom)"/> permet d’obtenir : A._Halperin