Cours XML 1.
Réponse AJAX

Objectif du cours...

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 donc globalement relativement différent du HTML, il n'en est d'ailleurs absolument pas le successeur. Voici les différences :

XMLHTML
  • Ils sont tous les deux issus du SGML.
  • Ils s'écrivent avec des balises.
  • Ce sont des formats en texte brut (et non pas binaires), on peut donc les consulter dans des éditeurs de texte brut (par exemple : Notepad).
  • Ils sont indépendants d'une plateforme.
Le XML sert à décrire des données quelconques, de façon structurée.Le HTML sert à décrire des pages Web destinées aux navigateurs.
Le XML est un générateur de langages (un métalangage).Le HTML est un langage statique, figé.
Le XML est un langage strict donc l'écriture doit être rigoureuse.Le HTML est devenu très permissif à cause des navigateurs récents.

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.

Comme le HTML, XML est dérivé du langage SGML (Standard Generalized Markup Language, norme ISO 8879). Le SGML date des balbutiements d'Internet (années 80), c'est un langage concis et abstrait, difficile à utiliser tel quel. Le XML représente une version simplifiée, abrégée du SGML, donc plus abordable. Le XML doit donc plutôt être considéré comme une simplification du SGML, plutôt qu'une amélioration du HTML.

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és, des exemples propriétaires et personnels :

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é :

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" ?> <informations>   <auteur type=salarie>Bob</auteur>   <texte>Une nouvelle information</texte> </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

Relevez les quatre erreurs qui font que ce document est mal formé :

<?xml version="1.0" encoding="iso-8859-1" ?> <client>   <nom>Bob</nom>   <prénom>Billy</prénom>   <adresse>20 allée des lilas, 84000 Avignon</adresse>   <date-adhesion>25/02/2004</date-adhesion> </client> <client>   <nom>Bugard</nom>   <prénom>Frank</prénom>   <adresse>12(bis) rue des romarins, 84000 Avignon</Adresse>   <date-adhesion>14/12/2005</date-adhesion> </client> <client type=professionnel>   <nom>Rorjak</nom>   <prénom>Marcel</prénom>   <adresse-postale>5 route des "Francs-tireurs", 13001 Marseille</adresse-postale>   <date-adhesion>19/04/2007</date-adhesion> </client> <client>   <nom>Dubois</nom>   <prénom>Albert</prénom>   <adresse>albert.dubois@free.fr</adresse>   <telephone portable="06 11 23 95 45" fixe="09 62 45 78 51">   <date-adhesion></date-adhesion>   <_facture_>...</_facture_> </client>
Votre réponse n°3

Les éditeurs XML

Les DTD (Document Type Definition) :
définition de la structure des balises

Principe

Premier exemple appliqué au fichier "utilisateurs.xml"

Intégration au fichier XML

La DTD peut être soit interne (incluse dans le fichier XML), soit externe (fichier séparé portant l'extension .DTD).

Définition des balises

Pour dire qu'une balise contient d'autres balises filles, dans un ordre précis :

La balise <utilisateur> doit contenir les balises filles <nom>, <prénom>, <mél>, <groupe>, <date-naissance>, obligatoires et dans cet ordre.

Pour dire qu'une balise peut apparaître une ou plusieurs fois, on utilise l'opérateur + :

La balise <utilisateurs> contient une ou plusieurs fois la balise fille <utilisateur>.

Pour dire qu'une balise peut apparaître zéro, une ou plusieurs fois, on utilise l'opérateur * :

La balise <utilisateurs> contient zéro, une ou plusieurs fois la balise fille <utilisateur>.

Pour dire qu'une balise peut apparaître zéro ou une fois, on utilise l'opérateur ? :

Les balises filles <mél>, <groupe> et <date-naissance> sont optionnelles.

Pour dire qu'une balise doit contenir du texte alphanumérique, et pas de balises filles, on utilise le mot-clé (#PCDATA) (parsed-character data) :

Les balises <nom>, <prénom> et <mél> contiennent du texte alphanumérique.

Pour dire qu'une balise peut contenir n'importe quoi (texte alphanumérique ou autres balises), on utilise le mot-clé ANY :

La balise <td> contient du texte quelconque ou n'importe quelle autre balise.

Pour dire qu'une balise est vide (par exemple les balises XHTML <br>, <img>, <meta>, etc.), on utilise le mot-clé EMPTY :

On dispose également d'un opérateur ou, qui s'écrit | :

La balise <tr> contient une combinaison quelconque de balises filles <td> et <th>.

Attention au parenthésage :

(A, B)+ : L'opérateur après la parenthèse s'applique au couple de balise <A><B>, ce qui autorise ce genre de choses : <A><B><A><B><A><B>.
(A, B+) : L'opérateur dans la parenthèse ne s'applique qu'à la balise <B>, ce qui autorise ce genre de choses : <A><B><B><B>.

Récupérez ce fichier : discotheque.xml.

Créez-lui sa DTD interne, puis copiez cette DTD ici :

Votre réponse n°4

Définition des attributs

A la DTD créée précédemment (pour le fichier discotheque.xml), rajoutez la partie concernant les attributs. Copiez ici uniquement cette nouvelle partie concernant les attributs (balises ATTLIST) :

Votre réponse n°5

Notion de document "valide"

On a vu plus haut qu'un document, pour être bien formé, doit respecter la syntaxe de base et quelques règles propres au langage XML.

Pour être valide, il doit respecter ces trois critères :

Les navigateurs n'affichent pas forcément une erreur si le document n'est pas valide (ce sont des applications dites non validantes). L'éditeur cooktop, présenté ci-dessus, permet de vérifier la validité d'un document.

Si ce n'est pas déjà fait, téléchargez et installez Cooktop.

Créez un document contenant le fichier discotheque.xml et la DTD que vous avez créée pour ce document.

Validez la DTD grâce à Cooktop. Une fois que la DTD est valide, copiez-là ici (pour vérifier la validité du document sous Cooktop : commande XML Validate (raccourci clavier : F7) ).

Votre réponse n°6

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°7

Donnez la DTD correspondant aux documents décrits dans la question précédente.

Votre réponse n°8

Ecrivez le fichier XML (y compris la ligne d'en-tête XML) représentant ce film :

Votre réponse n°9

Dans le cadre de l'abonnement MSDNAA de Microsoft, l'exportation des clés de produits au format XML donne ce résultat :



Donnez la DTD correspondant à cet extrait de document. Vous pouvez supposer que le champ type prend toujours les valeurs « sta » ou « aaa ».

Votre réponse n°10

Créez la DTD brute pour 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").

Votre réponse n°11

En respectant la DTD que vous avez rédigée à la question précédente, écrivez un fichier XML qui contient les personnes suivantes :

Votre réponse n°12

Les exonets concernant XML

Exonet 57 (par Eric Deschaintre) : document bien formé, valide, rédiger DTD et XML, afficher avec CSS.

Exonet 80 (par Eric Deschaintre) : comprendre un fichier XML, se documenter sur XSLT, comprendre et modifier le fichier XSLT.

Les études de cas contenant du XML

Etude de Cas DA, 2010, Nouvelle-Calédonie (cas ASDOMI), questions 5.1 et 5.2.

2002 - Etude de cas Métropole - Option ARLE (Lapointe) (corrigé) : proposer une structure arborescente de document XML, rédiger le document XML correspondant.

2004 - Etude de cas Métropole - Option DA (Epoka) (corrigé) : rédiger une DTD.

L'exploitation des données XML

Cours connexe.