I. Exemple 1

Un document XML doit comporter un ou plusieurs éléments.

  • Document XML bien formé comportant un élément.
Bien formé
Sélectionnez
<text>Ceci est un document XML</text>
  • Document XML bien formé comportant plusieurs éléments.
Bien formé
Sélectionnez
<text>Ceci est un 
<doctype>document XML</doctype>
</text>
  • Un document XML doit comporter au moins un élément.
Mal formé
Sélectionnez
??? Ceci est un document XML ???

II. Exemple 2

Il y a exactement un élément appelé élément racine ou élément document, dont aucune partie n'apparaît dans le contenu d'un autre élément.

  • <book> est l'élément racine.
Bien formé
Sélectionnez
<book>Ceci est un livre</book>
  • <list> est l'élément racine.
Bien formé
Sélectionnez
<list>
<item>Item 1</item>
<item>Item 2</item>
<item>Item 3</item>
</list>
  • Seul un élément racine est autorisé.
Mal formé
Sélectionnez
???
<item>Item 1</item>
<item>Item 2</item>
<item>Item 3</item> 
???

III. Exemple 3

Le nom de la balise de fin d'un élément doit correspondre à celui de la balise de début. Les noms tiennent compte des majuscules et des minuscules.

  • La balise de fin </book> correspond à la balise de début <book>.
Bien formé
Sélectionnez
<book>Ceci est un livre</book>
  • Ce document bien formé comporte 4 éléments différents <list>, <item>, <ITEM> et <Item>.
Bien formé
Sélectionnez
<list>
<item>Voiture</item>
<ITEM>Avion</ITEM>
<Item>Train</Item>
</list>
  • <item> - </itm> et <item> - </ITEM> ne correspondent pas.
Mal formé
Sélectionnez
<list>
<item>Voiture</itm>
<item>Avion</ITEM>
<item>Train</item> 
</list>

IV. Exemple 4

Si la balise de début figure dans le contenu d'un autre élément, la balise de fin doit également figurer dans le contenu du même élément. Plus simplement, les éléments délimités par les balises de début et de fin doivent s'imbriquer correctement les uns dans les autres.

  • Ces éléments sont correctement imbriqués.
Bien formé
Sélectionnez
<Weight>
        <number>12</number>
        <unit>gramme</unit>
</Weight>
  • Autre exemple de document bien formé.
Bien formé
Sélectionnez
<book>
        <chapter>
                <title>Introduction</title>
        </chapter>
        <chapter>
                <title>Récit</title>
                <subChapter>
                        <title>Partie 1</title>
                </subChapter>
                <subChapter>
                        <title>Partie 2</title>
                </subChapter>
        </chapter>
        <chapter>
                <title>Index</title>
        </chapter>
</book>
  • L'élément <italic> n'est pas correctement imbriqué.
Mal formé
Sélectionnez
<text>
        <bold><italic>XML</bold></italic>
</text>

V. Exemple 5

La fin de chaque élément commençant par une balise de début doit être indiquée par une balise de fin comportant le même nom que celui utilisé dans la balise de début. Le texte figurant entre la balise de début et la balise de fin est appelé le contenu de l'élément. Un élément sans contenu prend la forme spéciale suivante : <nom/> . La barre oblique devant le caractère > remplace la balise de fin.

  • Chaque élément comporte une balise de fin ou adopte la forme spéciale. Il n'y a aucune différence entre <AAA></AAA> et <AAA/> en XML.
Bien formé
Sélectionnez
<listOfTags>
        <AAA></AAA>
        <BBB></BBB>
        <CCC/>
        <DDD/>
</listOfTags>
  • Une erreur très fréquente consiste à oublier la barre oblique.
Mal formé
Sélectionnez
<description>
Il y a des pommes <color>jaunes<color> et <color>rouges</color>.
</description>

VI. Exemple 6

Les noms d'éléments peuvent comporter des lettres, des chiffres, des tirets, des traits de soulignement, des deux-points ou des points. Le caractère deux-points (:) ne peut être utilisé que dans le cas particulier où il sert à séparer des espaces de noms. Les noms d'éléments commençant par xml, XML ou une autre combinaison de la casse de ces lettres sont réservés à la norme XML.

  • Document comportant des caractères autorisés.
Bien formé
Sélectionnez
<permittedNames>
        <name/>
        <xsl:copy-of/>
        <A_long_element_name/>
        <A.name.separated.with.full.stops/>
        <a123323123-231-231/>
        <_12/>
</permittedNames>
  • Ce document comporte plusieurs erreurs.
Mal formé
Sélectionnez
<forbiddenNames>
        <A;name/>
        <last@name>
        <@#$%^()%+?=/>
        <A*2/>
        <1ex/>
</forbiddenNames>
  • Les noms ne peuvent pas commencer par xml.
Mal formé
Sélectionnez
<forbiddenNames>
        <xmlTag/>
        <XMLTag/>
        <XmLTag/>
        <xMlTag/>
        <xmLTag/>
</forbiddenNames>

VII. Exemple 7

Un élément peut comporter aucun, un ou plusieurs attributs. Les caractères autorisés sont les mêmes que pour les noms d'éléments. Le nom d'un attribut est séparé de sa valeur par le caractère =. La valeur de l'attribut doit être indiquée entre guillemets simples '...' ou doubles "..." . Si un guillemet simple ou double est utilisé dans la valeur d'un attribut, le délimiteur contraire doit être utilisé.

  • Document comportant des attributs bien formés.
Bien formé
Sélectionnez
<elements-with-attributes>
        <el _ok = "oui" />
        <one attr = "une valeur"/>
        <several first="1" second = '2' third= "333"/>
        <apos_quote case1="Aujourd'hui" case2='Il lança : "Salut, tout le monde!"  '/>
</elements-with-attributes>
  • Document comportant des attributs incorrects.
Mal formé
Sélectionnez
<errors>
        <wrong_char a*b = "23432"/>
        <mismatched_separator value = "12'/>
        <wrong_separator_type  value="aa"aa"/>
        <wrong_separator_type  value='bb'bb'/>
        <wrong_start XML-ID = "xml234"/>
</errors>

VIII. Exemple 8

Les caractères < et & ne peuvent pas être utilisés dans le texte, car ils sont utilisés dans le balisage. Si vous devez employer ces caractères, utilisez &lt; à la place de < et &amp; à la place de &.

  • Substitution de & et de <.
Bien formé
Sélectionnez
<example>
        <isLower>
                23 &lt; 46
        </isLower>
        <ampersand>
                Dupond &amp; fils
        </ampersand>
</example>
  • Les caractères & et < ne peuvent pas être utilisés dans du texte.
Mal formé
Sélectionnez
<example>
        <isLower>
                23 < 46
        </isLower>
        <ampersand>
                Dupond & fils
        </ampersand>
</example>

IX. Exemple 9

Les caractères >, " , et ' peuvent également être remplacés par &gt; , &quot; et &apos; respectivement.

  • Substitutions possibles.
Bien formé
Sélectionnez
<example>
        <right-bracket> A la fois > et &gt; sont autorisés</right-bracket>
        <double-quote> A la fois " et &quot; sont autorisés</double-quote>
        <apostrophe> A la fois ' et &apos; sont autorisés</apostrophe>
        Cela est utile dans : <el value=" &apos; &quot; &apos; "/>
</example>

X. Exemple 10

Des commentaires peuvent figurer n'importe où dans un document en dehors des autres balises. Un processeur XML peut permettre à une application, sans que cela soit une obligation, d'extraire le texte des commentaires. La chaîne de caractères "--" (deux tirets) ne doit pas figurer à l'intérieur des commentaires.

  • Les commentaires peuvent comporter n'importe quel caractère à l'exception des caractères -.
Bien formé
Sélectionnez
<!-- doc A -->
<example>
<!-- <HEAD>  -->
<!-- Caractères <&<  -->
</example>
  • Les commentaires ne doivent pas comporter la chaîne de caractères -.
Mal formé
Sélectionnez
<example>
        <!-- A -- B -->
</example>

XI. Exemple 11

Les instructions de traitement (PI - Processing instruction en anglais) permettent aux documents XML de contenir des instructions destinées aux applications.

  • Instructions de traitement.
Bien formé
Sélectionnez
<example>
<?perl lower-to-upper-case  ?>
<?web-server add-header = "université" ?>
<text>vscht</text>
</example>
  • Une instruction de traitement doit se terminer par ?>.
Mal formé
Sélectionnez
<example>
<?perl run _>
</example>

XII. Exemple 12

Les sections CDATA permettent de ne pas traiter les blocs de texte comportant des caractères qui seraient normalement identifiés comme du balisage. Les sections CDATA commencent par la chaîne "<![CDATA[" et se terminent par la chaîne "]]>". La chaîne ']]>' ne doit pas figurer à l'intérieur d'une section CDATA.

  • Section CDATA.
Bien formé
Sélectionnez
<example>
        <![CDATA[ <aaa>bb&cc<<<]]>
</example>
  • Une section CDATA ne doit pas comporter la chaîne de caractères ']]>'.
Mal formé
Sélectionnez
<example>
        <![CDATA[ <aaa>bb ]]>cc<<<]]>
</example>

XIII. Exemple 13

Les documents XML peuvent, et d'ailleurs doivent, commencer par une déclaration XML qui précise la version de la norme XML utilisée.

  • Spécification de la version XML.
Bien formé
Sélectionnez
<?xml version="1.0"?>
 <text>Ce document respecte la spécification XML 1.0.</text>
  • Spécification du codage.
Bien formé
Sélectionnez
<?xml version="1.0" encoding="ISO-8859-2"?>
 <text>Si aucun codage n'est indiqué, UTF-8 est pris par défaut</text>