XAML et espace blancXAML and whitespace

Découvrez les règles de traitement des espaces blancs utilisées par le langage XAML.Learn about the whitespace processing rules as used by XAML.

Traitement des espaces blancsWhitespace processing

Cohérent avec XML, les espaces blancs en XAML sont l’espace, le saut de ligne et la tabulation. Ils correspondent respectivement aux valeurs Unicode 0020, 000A et 0009.Consistent with XML, whitespace characters in XAML are space, linefeed, and tab. These correspond to the Unicode values 0020, 000A, and 0009 respectively. Par défaut, cette normalisation de l’espace blanc se produit lorsqu’un processeur XAML rencontre le texte interne trouvé entre des éléments dans un fichier XAML :By default this whitespace normalization occurs when a XAML processor encounters any inner text found between elements in a XAML file:

  • Les caractères de saut de ligne entre les caractères d'Extrême-Orient sont supprimés.Linefeed characters between East Asian characters are removed.
  • Tous les caractères d'espace blanc (espace, saut de ligne, tabulation) sont convertis en espaces.All whitespace characters (space, linefeed, tab) are converted into spaces.
  • Tous les espaces consécutifs sont supprimés et remplacés par un espace.All consecutive spaces are deleted and replaced by one space.
  • Un espace qui suit immédiatement la balise de début est supprimé.A space immediately following the start tag is deleted.
  • Un espace qui précède immédiatement la balise de fin est supprimé.A space immediately before the end tag is deleted.
  • Les caractères d’Asie orientale correspondent à un ensemble de plages de caractères Unicode allant de U+20000 à U+2FFFD et de U+30000 à U+3FFFD.East Asian characters is defined as a set of Unicode character ranges U+20000 to U+2FFFD and U+30000 to U+3FFFD. Ce sous-ensemble est également parfois appelé idéogrammes CJC.This subset is also sometimes referred to as CJK ideographs. Pour plus d'informations, consultez http://www.unicode.org.For more information, see http://www.unicode.org.

La « valeur par défaut » correspond à l'état désigné par la valeur par défaut de l'attribut xml:space ."Default" corresponds to the state denoted by the default value of the xml:space attribute.

Espace blanc dans le texte interne et primitives de chaîneWhitespace in inner text, and string primitives

Les règles de normalisation ci-dessus s’appliquent au texte interne au sein d’éléments XAML.The above normalization rules apply to inner text within XAML elements. À l’issue de la normalisation, un processeur XAML convertit le texte interne dans un type approprié comme ceci :After normalization, a XAML processor converts any inner text into an appropriate type like this:

  • Si le type de la propriété n’est pas une collection, mais n’est pas directement un type Object, le processeur XAML essaie de le convertir vers ce type à l’aide de son convertisseur de type.If the type of the property is not a collection, but is not directly an Object type, the XAML processor tries to convert to that type using its type converter. Un échec de conversion ici engendre une erreur d’analyse XAML.A failed conversion here results in a XAML parse error.
  • Si le type de la propriété est une collection et que le texte interne est contigu (sans balises d’éléments intermédiaires), le texte interne est analysé comme un élément String unique.If the type of the property is a collection, and the inner text is contiguous (no intervening element tags), the inner text is parsed as a single String. Si le type de collection ne peut pas accepter d’élément String, cela engendre également une erreur de l’analyseur XAML.If the collection type cannot accept String, this also results in a XAML parser error.
  • Si le type de la propriété est Object, alors le texte interne est analysé comme un élément String unique.If the type of the property is Object, then the inner text is parsed as a single String. S’il existe des balises d’éléments intermédiaires, cela engendre une erreur de l’analyseur XAML, car le type Object implique un objet unique (String ou autre).If there are intervening element tags, this results in a XAML parser error, because the Object type implies a single object (String or otherwise).
  • Si le type de la propriété est une collection, et que le texte interne n’est pas contigu, alors la première sous-chaîne est convertie en élément String et ajoutée en tant qu’élément de collection, l’élément intermédiaire est ajouté en tant qu’élément de collection et la sous-chaîne finale (le cas échéant) est ajoutée à la collection en tant que troisième élément String.If the type of the property is a collection, and the inner text is not contiguous, then the first substring is converted into a String and added as a collection item, the intervening element is added as a collection item, and finally the trailing substring (if any) is added to the collection as a third String item.

Espace blanc et modèles de contenu texteWhitespace and text content models

Dans la pratique, la conservation de l’espace blanc concerne uniquement un sous-ensemble de tous les modèles de contenu possibles.In practice, preserving whitespace is of concern only for a subset of all possible content models. Ce sous-ensemble se compose des modèles de contenu pouvant prendre le type String d’un singleton dans un formulaire, une collection d’éléments String dédiée ou un mélange d’éléments String et d’autres types dans des listes, collections ou dictionnaires.That subset is composed of content models that can take a singleton String type in some form, a dedicated String collection, or a mixture of String and other types in lists, collections, or dictionaries.

Même pour les modèles de contenu qui peuvent prendre des chaînes, le comportement par défaut de ces modèles de contenu est le suivant : tout espace blanc restant n'est pas traité comme significatif.Even for content models that can take strings, the default behavior within these content models is that any whitespace that remains is not treated as significant.

Conservation de l’espace blancPreserving whitespace

Plusieurs techniques pour conserver l’espace blanc dans le code XAML source à des fins de présentation finale ne sont pas affectées par la normalisation de l’espace blanc par le processeur XAML.Several techniques for preserving whitespace in the source XAML for eventual presentation are not affected by XAML processor whitespace normalization.

xml:space="preserve" : spécifiez cet attribut au niveau de l’élément quand l’espace blanc doit être conservé.xml:space="preserve": Specify this attribute at the level of the element where whitespace needs to be preserved. Notez que ceci conserve tous les espaces blancs, y compris ceux qui peuvent être ajoutés par des éditeurs de code ou des aires de conception pour aligner les éléments de balisage en guise d’imbrication visuellement intuitive.Note that this preserves all whitespace, including the spaces that might be added by code editors or design surfaces to align markup elements as a visually intuitive nesting. Le rendu de ces espaces dépend là encore du modèle de contenu de l’élément contenant.Whether those spaces render is again a matter of the content model for the containing element. Nous vous déconseillons de spécifier xml:space="preserve" au niveau de la racine, car la plupart des modèles objet ne considèrent pas l’espace blanc comme étant significatif.We don't recommend that you specify xml:space="preserve" at the root level, because the majority of object models don't consider whitespace as significant one way or another. Il est préférable de définir uniquement l'attribut spécifiquement au niveau des éléments qui restituent l'espace blanc dans des chaînes ou qui sont des collections significatives d'espaces blancs.It is a better practice to only set the attribute specifically at the level of elements that render whitespace within strings, or are whitespace significant collections.

Entités et espaces insécables : le code XAML prend en charge le placement d’une entité Unicode au sein d’un modèle objet texte.Entities and nonbreaking spaces: XAML supports placing any Unicode entity within a text object model. Vous pouvez utiliser des entités dédiées telles que l’espace insécable (en codage UTF-8).You can use dedicated entities such as nonbreaking space (in UTF-8 encoding). Vous pouvez également utiliser des contrôles de texte enrichi qui prennent en charge les caractères d'espace insécable.You can also use rich text controls that support nonbreaking space characters. Procédez avec caution si vous utilisez des entités pour simuler des caractéristiques de disposition telles que les retraits, car la sortie au moment de l’exécution des entités varie en fonction d’un nombre supérieur de facteurs que celui des fonctionnalités de disposition générales, telles que l’utilisation propre des volets et marges.Be cautious if you are using entities to simulate layout characteristics such as indents, because the run-time output of the entities vary based on a greater number of factors than would the general layout facilities, such as proper use of panels and margins.