Réponse AJAX
Objectif du cours...
- Connaître les principes de base du XML.
- Savoir rédiger un fichier XML.
- Savoir reconnaitre un document bien formé, valide.
Petite présentation de XML,
comparaison entre XML et HTML
Pour commencer, voici un exemple de document XML :
On remarque à travers cet exemple que :
- XML est un langage à base de balises, comme le HTML (les éléments, comme "informations", sont notés sous forme de balises ou marqueurs). Ici on peut voir les éléments informations, auteur, texte. Les mots suivants sont quasiment synonymes : balises, éléments, marqueurs.
- De la même façon que le HTML, il comporte, en plus des éléments :
- des attributs (par exemple type)
- des valeurs pour ces attributs (par exemple salarie).
- Il y a des guillemets autour des valeurs des attributs (par exemple "salarie"). C'est obligatoire, contrairement au HTML. On verra plus loin qu'en règle générale, le XML est beaucoup plus strict que le HTML au niveau de la syntaxe.
- Les éléments (informations, auteur, texte) ne sont pas prédéfinies dans le langage XML mais ont été librement inventées pour cet exemple. C'est une particularité de XML qui le rend si différent de HTML : on peut créer nos propres balises, et donc créer nos propres langages ! En HTML (4), on se contente d'utiliser les 95 balises prédéfinies : <html>, <head>, <body>, <table>, etc.
Présentation détaillée de XML
XML signifie eXtensible Markup Language. La norme XML est définie par le W3C (World Wide Web Consortium, www.w3.org), depuis 1996.
Le XML, en tant que métalangage, permet de créer de nouveaux langages. On peut soit-même créer notre propre langage pour nos applications personnelles. Voici des exemples de langages créés à partir de XML et universellement utilisée, des exemples propriétaires et personnels :
XHTML
(eXtended HyperText Markup
Language, pour décrire les pages Web. C'est lui le vrai successeur
du HTML, il correspond en effet à une reformulation du HTML 4.0,
mais en respectant la syntaxe et les règles du XML.
- MathML, pour représenter les formules mathématiques, exemple sur Wikipedia. Malheureusement, actuellement, trop peut de navigateurs savent afficher correctement ce format (par exemple : le navigateur Amaya).
- XMLTV, pour représenter les programmes de télévision. Exemple
de fichier XML. Capture après
traitement.
- Mes cours en XML : xml, dtd,
xsl, résultat.
- Exportation des clés MSDNAA.
- Les fichiers OpenOffice et Pack Office 2007.
XML, en soi, ne permet pas de faire grand chose ! Il permet en fait uniquement de décrire des données sous une forme bien structurée, mais pas la façon dont elles sont représentées. Pour dire comment un document XML doit s'afficher dans un navigateur, on a recourt à d'autres technologies (CSS, XSL ou XSLT).
La syntaxe du XML,
notion de document "bien formé"
Comme on l'a déjà dit, le XML obéit à une syntaxe très stricte (beaucoup plus que celle du HTML). La moindre erreur entraînera l'affichage, dans le navigateur, d'une erreur de syntaxe, en lieu et place du document.

Un tel document est dit mal formé. Un document qui obéit aux règles syntaxiques est dit bien formé.
Voici les règles de syntaxe à respecter pour qu'un document soit bien formé :
- il contient une en-tête du type <?xml version="1.0" ?> ;
- il existe un seul élément racine qui contient tous les autres éléments, par exemple :
- en XHTML, on a la balise racine
<html>
:
<?xml version="1.0" ?>
<html>
...
</html>
- en XMLTV, on a la balise racine
<tv>
:
<?xml version="1.0" ?>
<tv>
...
</tv>
- la casse est respectée sur les balises. Par exemple :
- <table> ... </TABLE>
n'est pas bien formé en XML (alors que c'est accepté
en HTML) ;
- <table> ... </table>
est bien formé ;
Remarque : actuellement, la tendance est
d'écrire les balises systématiquement en minuscule
pour éviter les erreurs. Ce n'est pas une obligation.
- les balises sont correctement imbriquées et ne se chevauchent
pas. Par exemple :
- texte en <b>gras, <i>gras italique</b>,
italique</i>., n'est pas bien formé (cf. erreur
ci-dessus), alors que cela s'affiche bien en HTML (texte en gras,
gras italique, italique.) ;
- L'équivalent bien formé de la structure ci-dessus
est : texte en <b>gras, </b><b><i>gras
italique</i></b><i>, italique</i>.
;
- A chaque balise ouvrante correspond une balise fermante, par exemple :
- <table> ... </table>,
<img ...></img> est
bien formé ;
- <img ... />, <meta
... /> sont bien formés ;
- La valeur des attributs est entre guillemets. Par exemple :
- <table width=150> n'est
pas bien formé en XML (alors que c'est accepté en HTML).
- <table width="150">
est bien formé.
- Les noms (des éléments, des attributs) doivent respecter
les règles suivantes, proches du Javascript :
- Les noms peuvent contenir des lettres (y compris les accents et
les alphbets spéciaux), des chiffres, point, deux points, tiret,
souligné.
- Les noms doivent commencer par une lettre ou un souligné.
- Les noms ne peuvent commencer par les lettres xml (ou XML ou Xml...).
- Les noms ne peuvent contenir des espaces.
- La longueur des noms est libre mais on conseille de rester raisonnable.
- On évitera certains signes qui pourraient selon les logiciels,
prêter à confusion (- ; . <
> etc.)
- Les caractères accentués (é, à, ê,
ï, ù, etc.) sont autorisés mais pourraient être
mal interprétés par certains programmes.
Rappel sur une erreur fréquente...
Les balises XML (comme en HTML) ne peuvent pas contenir d'espace. Par exemple, si je vois :
<table border>
Je sais qu'il s'agit de la balise table
et de l'attribut border
,
et non pas de la balise table border
, ce qui est syntaxiquement impossible.
Soit le document XML suivant :
< ?xml version="1.0" ?>
Bob
Une nouvelle information
Est-ce qu'il est bien formé (si non, donnez la liste des erreurs) ?
Votre réponse n°1
Réécrivez le document bien formé :
Votre réponse n°2
Dites combien vous voyez d'erreurs qui font que ce document est mal formé, relevez et expliquez chacune des erreurs :
< ?xml version="1.0" encoding="iso-8859-1" ?>
Rorjak
Marcel
5 route des "Francs-tireurs", 13001 Marseille
19/04/2007
Dubois
Albert
albert.dubois@free.fr
<_facture_>...
Votre réponse n°3
Les éditeurs XML
- Ils permettent, selon les logiciels :
- de créer des documents XML et tous les autres documents associés
(DTD, XSL, etc.) ;
- de vérifier si les documents XML sont bien formés et valides ;
- de visualiser le résultat de la transformation XSL ;
- de visualiser l'arbre correspondant à notre fichier XML ;
- etc.
-
- Exemple : Altova XMLSpy Enterprise Edition
(http://www.altova.com/download/xmlspy/xml_editor_enterprise.html),
et Altova XMLSpy Professional Edition
(http://www.altova.com/download/xmlspy/xml_editor_professional.html),
le plus cher et le plus complet :
- Autre exemples de logiciels gratuits, qui effectuent au moins la validation
par rapport à une DTD :
Exercices
Un film est caractérisé par un titre, éventuellement un titre original. Il est réalisé par une personne, parfois plusieurs. Il y a plusieurs acteurs, sauf dans certains cas (par exemple les documentaires), où il n'y a aucun acteur. Le film possède (en attribut, et non pas en balise) un genre qui est soit « fiction », « anime » ou « documentaire » (il n'y a pas d'autres valeurs possibles). On souhaite créer un document XML qui représente une liste de films. Dessinez le shéma qui représente la structure arborescente d'un tel document.
Votre réponse n°4
Ecrivez le fichier XML (y compris la ligne d'en-tête XML) représentant ce film :
- titre : Non, ce pays n'est pas pour le vieil homme
- titre original : No Country for Old Men
- Réalisateurs : Joel Coen, Ethan Coen
- Acteurs : Tommy Lee Jones, Woody Harrelson
- Genre : Fiction
Votre réponse n°5
On souhaite représenter le fichier de personnes suivant :
Une personne a un nom, un prénom, et une adresse postale, éventuellement une adresse mail. Elle peut avoir un ou plusieurs numéros de téléphone (on représente le type de numéro sous la forme d'un attribut : portable, fixe, bureau). Si l'attribut n'est pas précisé, c'est qu'il s'agit du portable. Pour les besoins des traitements, l'adresse postale doit être décomposée en n°, rue, code postal et ville. Une personne est soit un homme, soit une femme, ceci doit être représenté sous forme d'un attribut obligatoire ("M" ou "F").
Ecrivez un fichier XML qui contient les personnes suivantes :
- Jacques TRUCMUN, 57 rue des cerisiers, 84000 Avignon, portable : 06 21 58 97 41, bureau : 04 90 45 32 15
- Emilie AGLANTIN, 4 allée du soleil, 84000 Avignon, fixe : 04 90 86 54 23, bureau : 04 90 57 12 65 (emilie.aglantin@free.fr)
Votre réponse n°6
Lien avec l'épreuve de spécialité
Les épreuves de spécialité suivantes contiennent du XML :