1.1.C'est quoi XML ?
La norme XML (eXtensible Markup Language) décrit simplement comment construire un fichier texte permettant de stocker des informations en respectant une structure donnée. On parle alors de document XML.


1.2.XML ? Pour quoi faire?
Définir ainsi une structure globale de document a permis de créer des outils de rédaction ou de transformation de ces fichiers. Outils qui peuvent alors être utilisables quelque soit le domaine d'application.
La généralisation du XML permet, entre autres:
D'échanger des informations entre diverses applications (ex: SOAP).
De générer, à partir d'une seule source XML, des documents (HTML par exemple) ayant différents aspects selon l'utilisateur final (grâce aux transformations XSL).
etc.
Contrairement au HTML, le XML n'est pas (d'une manière générale) un format de présentation (comprendre d'affichage). Si on le souhaite un même fichier XML pourra servir à alimenter une base de données, donner des informations à un système de traitement, créer des documents sonores et si vous le voulez vraiment créer des pages HTML (dont le XHTML qui est une norme basée sur XML).


1.3.Un document XML? Ca ressemble à quoi?
Un document XML commence par un prologue puis est suivi d'un ensemble de balises.
Le prologue contient une première ligne qui commence par <?xml afin de préciser qu'il s'agit en effet d'un document XML. Cette ligne que l'on terminera par ?> permet également de préciser la version de XML utilisée (il n'y a guère que la 1.0 qui est utilisée) ainsi que l'encodage[C'est quoi?] utilisé (par défaut UTF-8). Le prologue peut également contenir d'autres informations comme le DOCTYPE mais nous y reviendrons.
Les balises sont délimitées par les caratères "inférieur" '<' et "supérieur" '>' (à la manière de ce que vous pouvez connaître avec l'HTML). Ces balises peuvent éventuellement contenir des attributs et/ou englober du texte libre.


1.4.Quel est le principe d'XML ?
En HTML, toutes les balises sont définies, elles sont recensées et on s'en sert comme bon nous semble (ex: <b>,<i>...). En XML il n'existe aucune balise prédéfinie, c'est à nous de les définir ainsi que les attributs. Généralement la norme XML ne suffit pas à elle même, elle doit être complétée par une norme propre à la fonction du document XML (i.e. du contexte dans lequel il sera utilisé):
Est-ce un document destiné à:
Stocker des actualités
Définir un annuaire
etc.
Tout ceci se fait sans avoir besoin de connaître, à l'avance, la façon dont les données vont être traitées. L'important c'est que les informations y soient et qu'elles soient accessibles aisément (i.e. isolées dans des balises ou attributs clairement identifiés).

Exemple|closed|green

<?xml version="1.0"?>
<annuaire>
<personne>
<nom>HAWKING</nom>
<prenom>Stephen</prenom>
</personne>
<personne>
<nom>REEVES</nom>
<prenom>Hubert</prenom>
</personne>
<personne>
<nom>EINSTEN</nom>
<prenom>Albert</prenom>
</personne>
</annuaire>


1.5.Les règles de construction d'un fichier XML

 

Puisqu'il s'agit d'une norme, il y a des règles à respecter lorsque l'on construit un document XML:
Le document doit (comme nous l'avons vu) commencer par une ligne déclarative <?xml
Le document doit être bien-formé
Le document doit être valide (si des règles de validation ont été définies)
Au delà de ces contraintes, le document peut (sans ce que ce soit une obligation):
inclure des directives (ex: préciser où trouver des règles de validation)
Nous allons voir dans les chapitres suivants comment cela se traduit.


1.6.La déclaration XML
Comme nous l'avons dit précédemment les documents XML commencent par une ligne <?xml (...)>. Cette ligne doit contenir l'attribut version afin de préciser quelle version de la norme XML est appliquée (autrement dit "1.0").
Elle permet également de préciser le type d'encodage[C'est quoi?] utilisé avec l'attribut encoding (ex: ISO-8859-1 pour les caractères utilisés en Europe occidentale). Si cet attribut n'est pas précisé, l'encodage est supposé être de l'unicode UTF-8.
<?xml version="1.0"?>

1.7.Ecrire un document XML bien-formé
Un document XML bien-formé est un document XML qui respecte les règles suivantes:
Il ne doit exister qu'une seule balise racine (i.e. première balise du document après la déclaration xml et les directives), le choix de son nom est laissé libre. Ainsi, si l'on choisi "baliseracine" comme balise racine alors l'ensemble des balises du document doit être compris entre <baliseracine> et </baliseracine>
Toute balise ouverte doit être refermée (i.e. à <balise> doit être associé </balise>). Si une balise est vide (i.e. n'englobe pas de texte) alors elle pourra être simplifiée en une balise auto-fermante et s'écrira <balise />
Les balises doivent-être imbriquées les unes dans les autres (i.e. une balise ouverte ne peut pas être fermée tant que toutes les balises incluses dedans n'ont pas été fermées. Il ne peut pas y avoir chevauchement de balises).
En outre:
Les noms des balises doivent commencer par une lettre ou "_", les caractères suivants peuvent être des chiffres, des lettres, "_", "." ou "-".
Les noms des balises ne doivent pas commencer par "xml" (réservé pour un éventuel usage futur)
Les balises peuvent être en majuscules ou minuscules (voire un mix) mais sont, dans la plupart des normes, en minuscules.
Le document que nous avions vu en introduction
répond bien à ces critères:
une seule racine (annuaire)
3 éléments (personne)
avec chacun des éléments imbriqués (nom et prénom)
Un document XML représente syntaxiquement un arbre, l'arbre correspondant au document donné en exemple est le suivant:

arbrexml

L’en-tête : le prologue
Il s’agit de la première ligne d’un document XML servant à donner les caractéristiques globales du document, c’est-à-dire :
• La version XML, soit 1.0 ou 1.1, sachant que la très grande majorité des documents sont en version 1.0 et que la version 1.1 est assez décriée
• Le jeu de caractères employé (encoding). Pour fonctionner, le parseur va avoir besoin de distinguer le rôle de chaque caractère, certains étant réservés à la syntaxe et d’autres représentant des données. Pour dé?nir un jeu de caractères, XML s’appuie sur des standards ISO et Unicode (voir http://www.unicode.org/). Notre standard Europe de l’ouest (ou iso-latin) est quali?é par ISO-8859-1. Lorsque l’encodage n’est pas précisé, c’est le standard UTF-8 qui est employé (avantage d’une compatibilité ANSI).

Les nœuds élément
Les éléments gèrent la structuration des données d’un document XML, un peu à la manière des répertoires qui servent à l’organisation des fichiers. On peut les quali?er de métadonnés, au sens où ils ne font pas partie réellement des données mais servent à en désigner la nature. À la place du terme élément, on peut utiliser les termes balise, tag ou encore nœud.
Pour décrire ce que contiennent les éléments, on parle de modèle de contenu. On trouve :
• Rien : il n’y pas de contenu, l’élément est vide.
• Du texte : nous détaillerons par la suite cette notion.
• Un ou plusieurs éléments : on peut les qualifier d’éléments fils, l’élément les contenant étant appelé un élément parent.

<?xml version="1.0" encoding="ISO-8859-1"?>
<cours>
<intervenant>Phileas</intervenant>
<chapitre>Formation XML
<paragraphe>L'extension de fichier</paragraphe>
<paragraphe>Le pouvoir du XML</paragraphe>
</chapitre>
</cours>

• cours : élément racine contenant trois éléments: intervenant, paragraphe et chapitre ;
• intervenant : élément contenant du texte ;
• chapitre : élément contenant du texte et des éléments les paragraphes ;
• paragraphe : élément contenant du texte.

Si maintenant nous nous penchons sur la syntaxe, nous avons donc :
• <element> : balise ouvrante.
• </element> : balise fermante.
• <element/> : balise ouverte et fermée que l’on nomme balise autofermée. C’est l’équivalent de <element></element>. 

Les attributs d’un élément
Un attribut est un couple (clé, valeur) associé à la définition d’un élément. Il est localisé dans la balise ouvrante de l’élément. Un élément peut donc avoir de 0 à n attributs uniques. L’attribut est complémentaire de l’élément de par son rôle au sens où il ajoute une information à l’élément ou bien encore le complète dans sa définition.
Exemple :
<auteur nom="brillant" prenom="alexandre">…</auteur>
<contact email="a[a].fr"/>
nom et prenom sont des attributs de l’élément auteur alors que email est un attribut de l’élément contact.
On sépare les attributs par au moins un espace (blanc simple, tabulation, retour à la ligne).
Les valeurs d’attributs peuvent figurer sur plusieurs lignes. On utilise soit les guillemets, soit les apostrophes pour encapsuler les valeurs.