Syntaxe XML et espaces
Soit les trois syntaxes XML suivantes (les espaces sont symbolisés par des ~ et les retours chariot par des §) :
<a>bonjour~aurevoir</a><b/>
<a>bonjour~~~~aurevoir</a><b/>
<a>bonjour§
aurevoir</a>~~~~<b/>
<a>bonjour
~aurevoir</a>§
<b/>
Ces trois syntaxes sont logiquement équivalentes.
Donc :
À l'intérieur d'un élément qui ne contient que du texte : 1 espace = N espaces = 1 retour chariot = N retours chariot
Entre deux éléments : 1 espace = N espaces = 1 retour chariot = N retours chariot = Rien (absence de caractère)
Dans la pratique seuls les cas de mixed content ont besoin que les espaces soient préservés. Les deux exemples ci-après ne sont pas équivalents :
<p>Ceci est <i>important</i></p>
<p>Ceci est<i>important</i></p>
Mais sans schéma il est impossible de décider a priori si le contenu d'un élément qui contient des éléments fils et des espaces est mixed ou si ces espaces servent juste à la mise en forme du XML.
Espaces conservés
Par défaut, un programme doit considérer que tous les espaces sont signifiants et doivent être conservés lors des traitements.
Remarque : Équivalence entre séparateurs
XML considère comme équivalents les caractères de séparation :
Espace ' '
Tabulation \t
Retour chariot \r
Fin de ligne \n