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 :
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.
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é.
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
Télécharge XML Copy Editor et installe le.
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.
<?xml version=“1.0” encoding=“ISO-8859-1”?>
dans le fichier DTD.<!ELEMENT …>
nom=““Paris”
par nom=“Paris”
. Erreur fréquente car les guillemets sont auto-complétés dès que tu écris nom=
donc inutile de les saisir.voir les énoncés des exercices dans le moodle
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.
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 « ! ».
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).
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).
c'est une liste de valeur séparées par un espace. ex: auteurs=“A2 A5 A1”
Utiliser <!DOCTYPE racine SYSTEM “fichier.dtd”> : racine est le nom de l'élément racine du document XML.
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+)>
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