Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez aussi afficher la version anglaise dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte.
Traduction
Anglais

Espace blanc [Standard XML]

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.

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


<?xml version="1.0"?>
 <BOOK>
  <BOOKNAME>XML</BOOKNAME>
 </BOOK>


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.

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>

et

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

et

<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.


<poem xml:space="default">
<author>
<givenName>Alix</givenName>
<familyName>Krakowski</familyName>
</author>
<verse xml:space="preserve">
<line>Roses   are  red,</line>
<line>Violets  are  blue.</line>
<signature xml:space="default">-Alix</signature>
</verse>
</poem>


et


<poem xml:space="default">
<author xml:space="default">
<givenName xml:space="default">Alix</givenName>
<familyName xml:space="default">Krakowski</familyName>
</author>
<verse xml:space="preserve">
<line xml:space="preserve">Roses   are  red,</line>
<line xml:space="preserve">Violets  are  blue.</line>
<signature xml:space="default">-Alix</signature>
</verse>
</poem>


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.

RemarqueRemarque

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.

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.

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.

Afficher: