Notre premier document XML
Un document XML peut débuter par une déclaration XML. Cette déclaration définit la version de XML utilisée, l'encodage et précise si le document contient des références externes.
Exemple :
<?xml version="1.0" encoding="iso-8859-1"?>
Structure du document XML
Syntaxe du prologue
<?xml attributs ?>
<?XML ATTRIBUTS ?>
Attributs XML
Instruction | Description |
version="numéro-de-version" | Version XML utilisée pour le document. Exemple : version="1.0" |
encoding="type-d'encodage" | Jeu de caractères employés. Exemple : encoding="iso-8859-1" |
standalone="yes|no" |
|
Elément racine
Il existe un seul et unique élément racine dans un document XML, par conséquent aucune partie de cet élément n'apparaît dans le contenu d'un autre élément.
Exemple :
<livre genre="BD">
<titre>Voyage en Italie</titre>
<auteur>Cosey</auteur>
</livre>
Dans cet exemple, <livre> nous signale le début de l'élément racine.
Pour des raisons de lisibilité, nous présenterons les éléments en arborescence. L'élément racine peut contenir un ou plusieurs éléments, qui peuvent eux-même contenir d'autres éléments.
Eléments XML
Comme pour les balises HTML, les éléments sont délimités de la manière suivante:
<nom>contenu</nom>
Exemple :
<titre>Voyage en Italie</titre>
Dans le cas ou un élément doit être présent (du point de vue syntaxique), mais ne possède pas de valeur, la manière suivante sera utilisée :
<nom></nom>
Attributs XML
Il est possible de déterminer un ou plusieurs attributs pour un élément. Un attribut sera signalé dans la balise ouvrante, par son nom suivi du signe égal (=), puis de sa valeur entre apostrophes.
<nomélément nomattribut="valeur de l'attribut">
Exemple :
<livre genre="BD">
Dans cet exemple, genre est un attribut.
Commentaires XML
Les commentaires se présentent de la même manière que les commentaires HTML :
<!-- Ceci est un commentaire -->
XML texte
Sous l'appellation texte, nous pouvons retrouver toute chaîne de caractères hors balisage.
Dans notre exemple, BD et Voyage en Italie sont reprises comme texte.
<livre genre="BD">
<titre>Voyage en Italie</titre>
XML CDATA
Si sous déclarons une chaîne de caractères comme étant de type CDATA, l'analyseur n'interprètera pas le contenu. Les caractères spéciaux comme <, >, [, etc. sont donc traités comme des caractères et non comme des délimiteurs.
Exemple :
<![CDATA[je peux mettre n'importe quoi ici, même des caractères comme < ou >.]]>
Remarques
- Nous ne pouvons employer des références d'entités (<, &, etc.) à l'intérieur d'une section CDATA, en raison d'une incapacité de transcription puisque seule la chaîne de caractères ]]> est reconnue comme balisage.
- Les sections CDATA ne peuvent pas s'imbriquer.
Instructions de traitement XML
Nous pouvons préciser quelle est l'application à utiliser pour traiter certaines données, ou spécifier les paramètres nécessaires au traitement de ces informations.
<?cible liste_attributs?>
- Cible : application à laquelle s'applique l'instruction.
- Liste d'attributs : données nécessaires au traitement des informations.
Remarque
Certaines informations de traitement débutent par <?xml dont l'usage est réservé (standard XML).
Exemple :
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
Remarques
XML est sensible à la casse (case-sensitive) :
Nous devons impérativement prendre en compte la différence entre minuscule et majuscule.
Incorrect :
<auteur>Cosey</Auteur>
Correct :
<auteur>Cosey</auteur>
Tout élément ouvert doit être fermé :
En effet, contrairement au HTML qui est plus laxiste, en XML, tout élément ouvert doit être fermé :
Incorrect :
<livre><auteur>Cosey</auteur></livre>
Correct :
<livre><auteur>Cosey</auteur></livre>
Hiérarchie :
Le document XML doit respecter les contraintes de formes, c'est à dire la hiérarchie des éléments XML. Une balise d'un élément peut être imbriquée dans une autre, mais la balise contenante ne peut être fermée avant la balise contenue.
Incorrect :
<livre genre="Fantasy">
<titre>Le seigneur des anneaux</titre>
<auteur>Tolkien</auteur>
<livre genre="BD">
<titre>Voyage en Italie</titre>
<auteur>Cosey</auteur>
</livre>
</livre>
Correct :
<livre genre="Fantasy">
<titre>Le seigneur des anneaux</titre>
<auteur>Tolkien</auteur>
</livre>
<livre genre="BD">
<titre>Voyage en Italie</titre>
<auteur>Cosey</auteur>
</livre>
Définition du document
Voici donc un exemple de document XML :
Code XML (test1.xml) (16 lignes)
<?xml version="1.0" encoding="UTF-8"?> <!-- test1.xml //--> <livres> <livre genre="Fantasy"> <titre>Le seigneur des anneaux</titre> <auteur>Tolkien</auteur> </livre> <livre genre="BD"> <titre>Voyage en Italie</titre> <auteur>Cosey</auteur> </livre> <livre genre="Info"> <titre>Les réseaux</titre> <auteur>Pujolle</auteur> </livre> </livres>
Ce qui est affiché de cette manière par votre navigateur :
Le même document avec une DTD interne :
Code XML (test2.xml) (23 lignes)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!-- test2.xml //--> <!DOCTYPE livres [ <!ELEMENT livres (livre+)> <!ELEMENT livre (titre,auteur)> <!ATTLIST livre genre CDATA #REQUIRED> <!ELEMENT titre (#PCDATA)> <!ELEMENT auteur (#PCDATA)> ]> <livres> <livre genre="Fantasy"> <titre>Le seigneur des anneaux</titre> <auteur>Tolkien</auteur> </livre> <livre genre="BD"> <titre>Voyage en Italie</titre> <auteur>Cosey</auteur> </livre> <livre genre="Info"> <titre>Les réseaux</titre> <auteur>Pujolle</auteur> </livre> </livres>
English translation
You have asked to visit this site in English. For now, only the interface is translated, but not all the content yet.If you want to help me in translations, your contribution is welcome. All you need to do is register on the site, and send me a message asking me to add you to the group of translators, which will give you the opportunity to translate the pages you want. A link at the bottom of each translated page indicates that you are the translator, and has a link to your profile.
Thank you in advance.
Document created the 07/11/2003, last modified the 02/08/2019
Source of the printed document:https://www.gaudry.be/en/xml-declaration.html
The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.