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"
  • yes : le document est autonome
  • no : le document se réfère à d'autres fichiers

 

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 (&lt;, &amp;, 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) :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- test1.xml //-->
  3. <livres>
  4.   <livre genre="Fantasy">
  5.     <titre>Le seigneur des anneaux</titre>
  6.     <auteur>Tolkien</auteur>
  7.   </livre>
  8.   <livre genre="BD">
  9.     <titre>Voyage en Italie</titre>
  10.     <auteur>Cosey</auteur>
  11.   </livre>
  12.   <livre genre="Info">
  13.     <titre>Les réseaux</titre>
  14.     <auteur>Pujolle</auteur>
  15.   </livre>
  16. </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) :
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <!-- test2.xml //-->
  3. <!DOCTYPE livres [
  4.   <!ELEMENT livres (livre+)>
  5.   <!ELEMENT livre (titre,auteur)>
  6.     <!ATTLIST livre genre CDATA #REQUIRED>
  7.   <!ELEMENT titre (#PCDATA)>
  8.   <!ELEMENT auteur (#PCDATA)>
  9. ]>
  10. <livres>
  11.   <livre genre="Fantasy">
  12.     <titre>Le seigneur des anneaux</titre>
  13.     <auteur>Tolkien</auteur>
  14.   </livre>
  15.   <livre genre="BD">
  16.     <titre>Voyage en Italie</titre>
  17.     <auteur>Cosey</auteur>
  18.   </livre>
  19.   <livre genre="Info">
  20.     <titre>Les réseaux</titre>
  21.     <auteur>Pujolle</auteur>
  22.   </livre>
  23. </livres>

 

Document créé le 07/11/03 00:00, dernière modification le 28/06/17 14:26
Source du document imprimé : https://www.gaudry.be/xml-declaration.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.