Académique Documents
Professionnel Documents
Culture Documents
Tutoriel d'introduction pour XML (eXtensible Markup Language). Tlchargez la version PDF. Tlchargez la version HTML/ZIP.
I - Introduction I.A - Qu'est-ce que c'est ? I.B - Entte et encodage I.C - Exemple I.D - Rgles respecter II - Un exemple pour comprendre : un carnet d'adresse II.A - Reprsentation d'une personne II.B - Reprsentation du carnet d'adresse III - Caractres spciaux et CDATA IV - Conclusion IV.A - Avantages IV.B - Dsavantages IV.C - Mon avis
-2Copyright 2005 - Victor STINNER. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://haypo.developpez.com/tutoriel/xml/introduction/
Cette ligne dfini le numro de version (ici 1.0), et l'encodage des caractres. Pour l'encodage, il existe principalement : ISO-8859-1 : Etats-Unis et Europe de l'Ouest. C'est le plus simple pour crire un document en Franais car les lettres accentues ne prennent qu'un caractre (octet). UTF-8 : Format international qui permet d'crire dans n'importe quelle langue. Chaque caractre un codage unique (Unicode). Les caractres latins (a-z et A-Z), chiffres arabes (0-9) et quelques autres caractres de ponctuation franaise sont cods sur un seul octet. Les autres caractres sont cods sur plusieurs octets (la taille peut varier de 2 4 caractres, peut-tre plus ?). Les caractres accentus franais prennent par exemple deux octets. Voyez le site d'Unicode dans la liste des liens en bas de page. Pour crire et lire en UTF-8, vos logiciels doivent supporter l'UTF-8 ! Sinon les caractres de plus d'un octet apparatront comme une chane de caractres bizarres.
I.C - Exemple
Exemple
<pere nom="Gilbert"> <fils nom="Victor"> C'est moi </fils> Mon pre. </pere>
Un document XML a une et une seule balise racine. Ici elle s'appelle pere :-) Une balise pour avoir un attribut, comme ici un nom. Les attributs sont un nom (chane de lettres A Z, minuscule ou majuscule) dont la valeur est crite en guillemets : nom="valeur". Une balise peut contenir du texte et/ou des balises "fils". On parle de balise parent (parent en anglais), et enfants (childrens) en rfrence aux arbres gnalogiques. Une balise peut galement tre vide (ne contenir aucune donnes en dehors de son nom).
-3Copyright 2005 - Victor STINNER. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://haypo.developpez.com/tutoriel/xml/introduction/
Pour crire en XML, il existe quelques rgles de base respecter : 1 2 Un document XML ne contient qu'une balise racine (parent). Une balise doit tre referme. Oubliez donc l'ancien HTML et ses balises fermes ou non, selon l'humeur du W3.org :-) Exemple courant : la balise img (image) doit tre referme. On n'crit plus
<img src="image.png">
mais
<img src="image.png" />
Une balise vide peut s'crire de diffrents manires. Prenons l'exemple de la balise HTML br. On peut l'crire sous trois formes diffrentes :
<br/> <br /> <br></br>
Les espaces (l'indentation) n'est pris en compte que dans le contenu des balises (pas dans la zone entre crochets < ... >).
<sac couleur="noir" marque="decathlon"> Mon sac de cours. </sac>
est diffrent de
<p>Une petite phrase pour remplir la balise p ...</p>
ou encore
<p> Une petite phrase pour remplir la balise p ... </p>
-4Copyright 2005 - Victor STINNER. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://haypo.developpez.com/tutoriel/xml/introduction/
Mais on verra qu'avec XSLT, il existe une option qui permet de supprimer les espaces et retours la ligne inutiles (utiliss pour l'indentation).
-5Copyright 2005 - Victor STINNER. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://haypo.developpez.com/tutoriel/xml/introduction/
Cette reprsentation a un gros dsavantage : on ne peut diffrencier le nom du prnom, et on ne peut retrouver le pays dans l'adresse. On peut alors utiliser une autre reprsentation :
<personne> <nom> <prenom>Victor</prenom> <nom>STINNER</nom> </nom> <email> <identifiant>victor.stinner</identifiant> <serveur>haypocalc.com</serveur> </email> <adresse> <numero>282</numero> <rue>7e rue</rue> <ville>Qubec</ville> <pays>CANADA</pays> </adresse> </personne>
La mme adresse prend beaucoup plus de place et est plus longue crire. L'avantage ? Et bien, on peut correctement identifier les informations. On peut alors envisager d'effectuer un tri par nom, par prnom, par serveur d'email, par pays, etc. On peut galement faire des recherches de personnes. On commence voir se construire l'arbre des donnes. Le pays est stock dans la balise adresse, qui elle mme est stocke dans la balise pre personne. Cette reprsentation est assez logique, et la localisation d'une balise (dans l'arbre XML) est une information en elle mme. On pourrait trouver plusieurs balises nom dans l'arbre qui n'auront pas forcment le mme sens : nom du carnet d'adresse, nom d'une personne, nom d'un groupe de personne, etc.
J'ai regroup les personnes dans des groupes. Ceci rajoute une information supplmentaire sur une personne : on sait quel groupe de personnes elle appartient. J'ai donn un nom au groupe par une balise nom, mais on peut galement utilis un attribut :
<groupe nom="Amis"> ... </groupe> <groupe nom="Famille"> ... </groupe>
Le choix entre une balise ou un attribut est laiss au programmeur. En pratique, la technique pour accder aux donnes est assez semblable. Il faut par contre savoir qu'un attribut est unique, contrairement aux balises qui peuvent tre rptes. Note: On peut galement limiter le nombre de balises autorises par les DTD ou XML Schma, mais nous ne verrons pas a dans cet article.
-7Copyright 2005 - Victor STINNER. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://haypo.developpez.com/tutoriel/xml/introduction/
Mais tout ceci est assez contraignant, plus particulirement pour crire du source (en langage C par exemple) qui est rempli de ces caractres. On peut alors utiliser des sections CDATA. Il suffit d'ouvrir une section par la balise <![CDATA[, et la refermer par ]]>. A l'intrieur d'une section CDATA, on peut utiliser les caractres spciaux sans problme. Par contre on ne peut pas y crire ]]> qu'il faut crire ]]>. Exemple de CDATA :
<p>Un peu de texte <b>HTML</b> qui ne sera pas mis en forme car il est plac dans une section CDATA ;-)</p>
-8Copyright 2005 - Victor STINNER. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://haypo.developpez.com/tutoriel/xml/introduction/
IV.B - Dsavantages
La forme est tellement libre, qu'on peut avoir des formats incompatibles. Ex: une information peut-tre stocke sous forme de balise, ou alors sous forme d'attribut dans deux documents diffrents. On peut utiliser les DTD ou XML Schema pour empecher ces problmes. Le XML utilis sous forme de fichier peut gnrer des fichiers trs gros et difficilement ditables la main. Pour des grands nombres d'enregistrement, un dcoupage en plusieurs fichiers ou l'utilisation d'une base de donne est ncssaire.
-9Copyright 2005 - Victor STINNER. Aucune reproduction, mme 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' 3 ans de prison et jusqu' 300 000 E de domages et intrts.
http://haypo.developpez.com/tutoriel/xml/introduction/