Ceci est une ancienne révision du document !
Table des matières
TME DTD
Preparation
Télécharger l'archive contenant les fichiers XML et DTD et les librairies jar permettant de faire les exercices demandés : tme-dtd-etu.zip et décompresser la.
Choisir un outils pour valider des DTD: soit graphique soit en mode texte.
Outil en mode texte
Une solution en mode ligne de commande est d'utiliser le parseur de Xerces2 écrit en java sous Linux,Mac ou Win
Sous Linux/Mac
aller dans le dossier dtd contenant les fichiers du tme. Editer un fichier valide contenant ceci:
#!/bin/bash export XERCES_HOME="chemin_vers_le_repertoire_dtd" export BD_CLASSPATH_DTD_XSL=$XERCES_HOME/xercesSamples.jar:$XERCES_HOME/xml-apis.jar:$XERCES_HOME/xercesImpl.jar java -cp "$BD_CLASSPATH_DTD_XSL" sax.Counter -v $*
Le fichier valide doit être exécutable:
chmod +x valide
La validation consiste à vérifier que la DTD est syntaxiquement correcte et que le document XML respecte la DTD. Dans le document XML, ajouter un DOCTYPE pour faire référence à la DTD utilisée. Puis, utiliser la commande valide pour lancer la validation. Pour valider par exemple le fichier base1.xml, exécutez la commande suivante:
./valide base1.xml
Sous Windows
ouvrir un terminal, aller dans le dossier dtd contenant les fichiers du tme. Editer un fichier valide.bat contenant ceci :
REM Modifier cette variable en fonction du dossier contenant les jar telechargees set XERCES_HOME=C:\Users\PRENOM\mlbda\tp\tme-dtd-etu set CP1=%XERCES_HOME%\xml-apis.jar set CP1=%CP1%;%XERCES_HOME%\xercesSamples.jar set CP1=%CP1%;%XERCES_HOME%\xercesImpl.jar java -cp "%CP1%" sax.Counter -v %1
Pour valider par exemple le fichier base1.xml, saisir la commande suivante. Attention le paramètre est le nom du fichier XML (mais pas le nom du fichier DTD).
valide.bat base1.xml
Outils avec interface graphique
On utilisera de préférence XML Copy Editor pour valider un doc XML et sa DTD.
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: http://www.donkeydevelopment.com/xmlspear/buglist.html#B-25)
Exercices
voir poly de TD page 18 : définir la DTD d'une ville puis celle du guide touristique
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 site web pour la validation online de XML + DTD
Retour Moodle MLBDA
