Table des matières

TME DTD

L'objectif de ce TME est de savoir définir la structure d'un document XML à l'aide d'une DTD. Dans un document XML, l'instruction DOCTYPE associe le document XML avec une DTD. La validation consiste à vérifier que :

Preparation

Télécharge, depuis le moodle, l'archive contenant les fichiers XML et DTD permettant de faire les exercices demandés. Décompresse l'archive dans ton répertoire de travail.

L'outil XML Copy Editor

On demande d'utiliser XML Copy Editor pour valider un doc XML et sa DTD. Si tu travailles sur un ordinateur de la PPTI, le logiciel est déjà installé.

XML Copy Editor pour les machines PPTI

Le programme xmlcopyeditor est déjà installé, il suffit de saisir:

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
/usr/local/bin/xmlcopyeditor
Installation sur sa machine perso

Télécharge XML Copy Editor et installe le.

Utilisation de XML Copy Editor

Prépare l'interface pour avoir les 2 fenêtres XML et DTD juxtaposées comme ceci:

Répète les étapes suivantes pour rédiger ta DTD : édite la DTD, sauvegarde la DTD, clique sur le fichier XML avant de le valider. Puis valide le (touche F5 ou bouton V ), consulte les erreurs de validation affichées dans le panneau inférieur, corrige la DTD ainsi de suite.

Une fois que ta DTD est prête, compare la avec celle générée automatiquement (menu XML → Create Schema, choisir schema type:DTD). Analyser les differences entre la DTD générée automatiquement et votre propre solution.

Questions fréquentes :

Exercices

voir les énoncés des exercices dans le moodle

Questions / réponses fréquentes

élément vide

Un élément X vide peut s'écrire indifféremment <X /> ou <X></X> sans aucun espace entre la balise de début et de fin. Un élément vide peut avoir des attributs.

syntaxe DTD vs XML

La syntaxe d'une DTD diffère de la syntaxe XML: le nom des balises: <!ELEMENT> et <!ATTLIST> est en majuscule, sans espace après le « ! ».

Définition d'un élément et de son modèle de contenu:

l'espace est obligatoire entre le nom d'un élément et son modèle de contenu :

<!ELEMENT XXX espace (YYY)>

Le contenu vide s'écrit EMPTY sans parenthèses. Rmq: le contenu (EMPTY) avec parenthèses signifie : « contient un sous élément nommé EMPTY»

Le contenu (#PCDATA) signifie : contient une feuille de type chaîne de caractère.

les attributs d'un éléments ne sont pas déclarés dans le modèle de contenu de l'élément mais ils sont déclarés séparément avec <!ATTLIST …> Les types des attributs sont CDATA, ID, IDREF, IDREFS, … (mais pas #PCDATA ni aucun type numérique).

Comment est définie l'intégrité référentielle ?

Le domaine des valeurs d'une référence (attribut de type IDREF) est l'ensemble des valeurs des identifiants (tous les attributs de type ID).

Quelle est la syntaxe d'une valeur de type IDREFS ?

c'est une liste de valeur séparées par un espace. ex: auteurs=“A2 A5 A1”

Comment associer un document XML avec sa DTD ?

Utiliser <!DOCTYPE racine SYSTEM “fichier.dtd”> : racine est le nom de l'élément racine du document XML.

Peut-on inclure un fragment de DTD dans une deuxième DTD ?

Oui, mais pas en TME (pour éviter de débugger plusieurs DTD à la fois). Exemple pour base1.dtd :

    <!ENTITY % ville SYSTEM "ville.dtd" >
    %ville;
    <!ELEMENT base (ville+)>

Divers

Un autre outil graphique pour validation XML par DTD est XML Spear (si problème de démarrage sous Mac, consulter la liste de problèmes à cette adresse

Un site web pour la validation online de XML + DTD

Retour Moodle MLBDA