Tutoriel XML

Miloslav Nic

Traducteur

Eric Le Carre

Le langage XML est décrit dans la norme XML 1.0. Ce tutoriel présente certaines caractéristiques de XML à l'aide de nombreux exemples. ♪

- Titre : Tutoriel XML

- Auteur : Miloslav Nic

- Traducteur : Eric Le Carre

- Parution : 13 juin 2005

- Mise à jour : 28 décembre 2012

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2005 Miloslav Nic. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Exemple 1

- II. Exemple 2

- III. Exemple 3

- IV. Exemple 4

- V. Exemple 5

- VI. Exemple 6

- VII. Exemple 7

- VIII. Exemple 8

- IX. Exemple 9

- X. Exemple 10

- XI. Exemple 11

- XII. Exemple 12

- XIII. Exemple 13

I - Exemple 1

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

- Document XML bien formé comportant un élément.

Bien formé

<text>Ceci est un document XML</text>

- Document XML bien formé comportant plusieurs éléments.

Bien formé

<text>Ceci est un
<doctype>document XML</doctype>
</text>

- Un document XML doit comporter au moins un élément.

Mal formé

??? 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é

<book>Ceci est un livre</book>

- <list> est l'élément racine.

Bien formé

<list>
<item>Item 1</item>
<item>Item 2</item>
<item>Item 3</item>
</list>

- Seul un élément racine est autorisé.

Mal formé

???
<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é

<book>Ceci est un livre</book>

- Ce document bien formé comporte quatre éléments différents <list>, <item>, <ITEM> et <Item>.

Bien formé

<list>
<item>Voiture</item>
<ITEM>Avion</ITEM>
<Item>Train</Item>
</list>

- <item> - </itm> et <item> - </ITEM> ne correspondent pas.

Mal formé

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

<Weight>
<number>12</number>
<unit>gramme</unit>
</Weight>

- Autre exemple de document bien formé.

Bien formé

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

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

<listOfTags>
<AAA></AAA>
<BBB></BBB>
<CCC/>
<DDD/>
</listOfTags>

- Une erreur très fréquente consiste à oublier la barre oblique.

Mal formé

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

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

<forbiddenNames>
<A;name/>
<last@name>
<@#$%^()%+?=/>
<A*2/>
<1ex/>
</forbiddenNames>

- Les noms ne peuvent pas commencer par xml.

Mal formé

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

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

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

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

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

<example>
<right-bracket> À la fois > et &gt; sont autorisés</right-bracket>
<double-quote> À la fois " et &quot; sont autorisés</double-quote>
<apostrophe> À 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é

<!-- doc A -->
<example>
<!-- <HEAD>  -->
<!-- Caractères <&<  -->
</example>

- Les commentaires ne doivent pas comporter la chaîne de caractères -.

Mal formé

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

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

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

<example>
<![CDATA[ <aaa>bb&cc<<<]]>
</example>

- Une section CDATA ne doit pas comporter la chaîne de caractères ']]>'.

Mal formé

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

<?xml version="1.0"?>
<text>Ce document respecte la spécification XML 1.0.</text>

- Spécification du codage.

Bien formé

<?xml version="1.0" encoding="ISO-8859-2"?>
<text>Si aucun codage n'est indiqué, UTF-8 est pris par défaut</text>