Partager via


Espace blanc

La spécification XML du World Wide Web Consortium (W3C) normalise différentes conventions de fin de ligne en une seule convention mais conserve tous les autres espaces blancs, excepté dans les valeurs d'attributs. XML fournit également un ensemble d'outils que les documents peuvent utiliser pour indiquer aux applications si les espaces blancs doivent être conservés.

Espace blanc et la déclaration XML

Selon le standard XML 1.0 actuel, un espace blanc n'est pas autorisé avant la déclaration XML.

Si un espace blanc apparaît avant la déclaration XML, il est traité comme une instruction de traitement. Les informations, en particulier l'encodage, ne peuvent pas être utilisées par l'analyseur.

Pour plus d'informations sur la déclaration XML, voir Déclaration XML.

Espaces blancs dans le contenu d'un élément

Les analyseurs XML doivent signaler tout espace blanc qui apparaît dans le contenu d'un élément à l'intérieur d'un document. Pour cette raison, les trois documents suivants sont des documents différents pour un analyseur XML.

<document>
<data>1</data>
<data>2</data>
<data>3</data>
</document>

and:

<document><data>1</data><data>2</data><data>3</data></document>

and:

<document><data>1</data> <data>2</data> <data>3</data></document>

Pour certaines applications, les valeurs des trois points de données importent davantage que l'esthétique de l'impression. Pour les applications XML orientées document, la conservation des espaces blancs peut être critique.

Les auteurs de documents peuvent utiliser l'attribut xml:space pour identifier des portions de documents où les espaces blancs sont considérés comme importants. Les feuilles de style peuvent aussi utiliser l'attribut xml:space comme marqueur pour conserver les espaces blancs dans la présentation. Cependant, étant donné que de nombreuses applications XML ne comprennent pas l'attribut xml:space, son utilisation est considérée comme indicative.

L'attribut xml:space accepte deux valeurs.

  • default
    Cette valeur permet à l'application de traiter les espaces blancs comme nécessaires. L'omission d'un attribut xml:space produit le même résultat que l'utilisation de la valeur default.
  • preserve
    Cette valeur demande à l'application de conserver les espaces blancs tels quels, suggérant qu'ils peuvent être significatifs.

Les valeurs des attributs xml:space s'appliquent à tous les descendants de l'élément contenant l'attribut, à moins d'être supplantées par l'un des éléments enfants.

Par exemple, les documents suivants spécifient le même comportement concernant les espaces blancs.

and:

Dans les deux exemples, l'application est avertie que tous les espaces blancs contenus dans les lignes du poème doivent être conservés, mais que les espaces blancs contenus dans les autres parties du document peuvent être traités comme nécessaires.

Comme sa contrepartie d'indication de langue, xml:lang, l'attribut xml:space doit être déclaré dans une DTD s'il est utilisé dans un environnement de validation. L'espace de noms xml ne doit pas être déclaré car il est réservé par la spécification XML.

Par défaut, Microsoft XML Core Services (MSXML) ne respecte pas l'attribut xml:space. Si une application doit respecter l'attribut xml:space, la propriété preserveWhiteSpace de l'objet DOMDocument doit être définie sur True avant l'analyse.

xmldoc= new ActiveXObject("Msxml2.DOMDocument.5.0");

xmldoc.preserveWhiteSpace = true;

xmldoc.load(url);

MSXML fournit également des réglages qui permettent de déléguer à l'analyseur le traitement des espaces blancs de l'application. Pour plus d'informations, voir la rubrique sur les espaces blancs et le modèle d'objet de document DOM dans la documentation du SDK MSXML.

ms256097.note(fr-fr,VS.100).gifRemarque :
La conservation des espaces blancs peut augmenter sensiblement la taille des arborescences DOM (Document Object Model) en raison de la charge qu'impose la conservation des nœuds d'espace blanc entre les éléments.

Espaces blancs dans les attributs

Bien que les processeurs XML conservent tous les espaces blancs dans le contenu des éléments, ils les normalisent souvent dans les valeurs des attributs. Les tabulations, retours chariot et espaces sont rapportés comme des espaces simples. Dans certains types d'attributs, ils éliminent les espaces blancs qui précèdent ou suivent le corps principal de la valeur et réduisent les espaces blancs contenus dans la valeur à des espaces simples. (Si une DTD est disponible, cette élimination des espaces blancs s'applique à tous les attributs qui ne sont pas du type CDATA.)

Par exemple, un document XML pourrait contenir :

<whiteSpaceLoss note1="this is a note." note2="this
is
a
note.">

Un analyseur XML rapporte les deux valeurs d'attribut comme "this is a note.", convertissant donc les sauts de ligne en espaces simples.

Remarque : ni DOM ni SAX dans MSXML3 ne normalisent les espaces blancs. À la différence de SAX, DOM dans MSXML6 ne normalise pas l'espace blanc.

S'il existe une DTD pour le document, les attributs qui sont déclarés comme étant d'un type autre que CDATA voient leurs espaces supprimés en début et fin de valeur ; tous les groupes d'espaces blancs à l'intérieur de la valeur sont remplacés par des espaces simples. S'il n'y a pas de DTD, l'analyseur suppose que tous les attributs sont de type CDATA.

Traitement des fins de ligne

Les processeurs XML traitent la séquence de caractères CRLF (retour chariot-saut de ligne) comme des caractères CR ou LF uniques. Tous sont rapportés comme constituant un seul caractère LF. Les applications peuvent enregistrer les documents en utilisant la convention de fin de ligne appropriée.