Exercice n° 57

Public(s)

Section de TS Informatique de gestion

Savoir(s)

S27 Outils et logiciels bureautiques 
Échange de données entre logiciels 
S35 Conception et développement d'applications à l'aide d'un langage de programmation procédural 
Générateur de maquettes d'écran et d'état 
S42 - Organisation des entreprises et technologies de l'information associées
Échange de données informatisé (ÉDI), collecticiel, gestion électronique de documents 
S43 Méthodes et outils de gestion Information et documentation 
Suivi de l'évolution technologique

Capacité(s)
  • Caractériser les nouvelles technologies de l'information

  • Collecter, sélectionner et exploiter des informations provenant de différents médias

  • Mettre en ouvre un outil de gestion documentaire

Objectif(s)
  • Utiliser le langage XML (eXtensible Markup Language) pour structurer et présenter des informations dans un document.

  • Qualifier un document XML bien formé et valide.

Cet exercice est l'occasion d'une première approche du langage XML, les espaces de nom et les types de données XMLSchema notamment ne sont pas abordés.

Auteur(s)

Eric DESCHAINTRE merci à Frédéric VARNI et Pierre LOISEL pour leur relecture.

Fichier

exonet57.zip

Contexte de travail

XML (Extensible Markup Language) est un langage qui permet de définir une structure de données et son contenu. Ce langage défini par le W3C est rapidement adopté par l'industrie (Software AG, IBM, Sun, Microsoft, Netscape, DataChannel, SAP et bien d'autres ont annoncé leur adhésion au XML).

Les principaux avantages de ce langage sont les suivants :
- Il permet de définir un document indépendamment du logiciel qui a servi à le créer (pas de format propriétaire) ;
- Il distingue clairement la forme du contenu (ce qui n'est pas le cas du langage HTML dont la plupart des balises modifient l'apparence du document) ;
- Il est extensible : les balises peuvent être définies par des personnes ou des entreprises pour une application spécifique ;
- Les documents XML contiennent des métadonnées sous forme de balises et d'attributs, il est possible d'accéder aux données indépendamment d'un système de stockage propriétaire (comme un SGBDR).
- Il est facile d'établir la correspondance entre les structures de données existantes, telles que les systèmes de fichiers ou les bases de données relationnelles, et XML. Celui-ci accepte de multiples formats de données et peut couvrir toutes les structures de données existantes.

Cet exercice propose une toute première introduction au langage XML.

Considérons le document suivant qui décrit un CD audio (en partie) :

Titre : Stan Getz Finest Hour
Interprète : STAN GETZ
Genre : Jazz/blues
Piste 1 :
             Titre : It Never Entered My Mind
             Compositeur : Hart
             Compositeur : Rodgers
             Durée : 3 :51
Piste 2 :
             Titre : S-h-i-n-e
             Compositeur : Brown
             Durée : 8 :56

Seules les deux premières pistes de ce CD sont présentées.

On peut représenter la structure de ce document sous la forme d'un arbre :

Les éléments <Piste> et <Compositeur> peuvent être répétés plusieurs fois.

Voici la définition de ce type de document :
Cette définition respecte la syntaxe DTD (Document Type Definition) définie par le W3C, cette définition est enregistrée dans le fichier cd.dtd.

<?xml version="1.0" encoding="ISO-8859-1"?>
<!ELEMENT CD (Titre, Interprete, Genre, Piste+)>
<!ELEMENT Piste (Titre, Compositeur+, Duree)>
<!ELEMENT Titre (#PCDATA)>
<!ELEMENT Interprete (#PCDATA)>
<!ELEMENT Genre (#PCDATA)>
<!ELEMENT Compositeur (#PCDATA)>
<!ELEMENT Duree (#PCDATA)>

Un élément peut être une donnée (on se limite ici au type #PCDATA - Ou Parsed Character DATA, chaîne de caractères analysée) ou bien être composé d'autres éléments indiqués entre parenthèses après le nom de l'élément.
Le signe " + " indique une répétition (une ou plusieurs fois). Pour information le signe " * " indique une répétition (zéro, une ou plusieurs fois) et le signe " ? " signifie que l'élément peut apparaître zéro ou une fois.

Voici la définition XML du document présenté ci-dessus :
Cette définition est enregistrée dans le fichier cd.xml, elle est associée à la définition de type de document contenue dans le fichier cd.dtd

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE CD SYSTEM "cd.dtd">
<CD>
<Titre>Stan Getz Finest Hour</Titre>
<Interprete>STAN GETZ</Interprete>
<Genre>Jazz/blues</Genre>
<Piste>
<Titre>It Never Entered My Mind</Titre>
<Compositeur>Hart</Compositeur>
<Compositeur>Rodgers</Compositeur>
<Duree>3:51</Duree>
</Piste>
<Piste>
<Titre>S-h-i-n-e</Titre>
<Compositeur>Brown</Compositeur>
<Duree>8 :56</Duree>
</Piste>
</CD>

Document XML bien formé et valide

Un document XML peut avoir deux qualifications, il peut être :
- " bien formé " quand il respecte la syntaxe du langage XML définie par le W3C.
- " valide " quand il est associé à une définition de type de document et qu'il la respecte (noms des éléments, type, répétition et ordre d'apparition dans le document)

Voici les principales règles de syntaxe que doit respecter un document XML bien formé :
- Il comprend un entête XML du type <?xml version="1.0" ?>
- Il existe un seul élément racine qui contient tous les autres éléments
- Les balises sont correctement imbriquées : les balises ouvrantes ont une balise fermante associée et il n'y a pas de chevauchement
- Le nom des balises est libre mais il contient au moins une lettre
- Les attributs des balises, lorsqu'ils existent (ce n'est pas le cas ici), ont obligatoirement une valeur qui doit toujours apparaître entre double quotes.

Travail à Réaliser

1 - Vérifier que le fichier cd.xml présenté ci-dessus correspond à un document XML bien formé et valide.
2 - Qualifier le document XML ci-dessous : est-il bien formé ? est-il valide ?

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE CD SYSTEM "cd.dtd">
<Titre>Stan Getz Finest Hour</Titre>
<Genre>Jazz/blues</Genre>
<Interprete>STAN GETZ</Interprete>
<Piste>
<Titre>S-h-i-n-e</Titre>
<Compositeur>Brown</Compositeur>
<Duree>8 :56</Duree>
</Piste>

3 - Rédiger la définition (DTD) d'un document de type " Bon de commande " en utilisant le texte en italiques ci-dessous :

Un bon de commande est émis par une organisation identifiée par un nom, une adresse, un numéro de téléphone et éventuellement un numéro de télécopie. Il s'adresse à une autre organisation définie de la même manière. Il comporte une date, un montant total ainsi que une ou plusieurs lignes de commande. Chaque ligne comporte une référence de produit, un intitulé, une quantité, un prix unitaire..

4- Rédiger un document XML bien formé et valide par rapport à la définition de document proposée à la question précédente.

5 - Rédiger la définition (DTD) d'un document de type " Exonet " en utilisant la structure du présent exercice (composé de Description, Énoncé, Travail à faire,.). On supposera qu'un exercice ne contient que du texte.

6 - Rédiger le document XML qui utilise la définition ci-dessus pour présenter l'intégralité de cet exercice. On renseignera les valeurs des données uniquement pour la partie Description.

7 - Visualiser dans un navigateur le document ainsi obtenu en l'associant à une feuille de style en cascade grâce à une ligne du type <?xml-stylesheet type="text/css" href="exonet.css"?>

Cliquez ici pour télécharger cet exercice et sa correction au format RTF