TME XML (1) : Les DTD
Préparation
- Prérequis : votre environnement doit être configuré. Votre fichier /.bash_profile doit contenir la ligne
source /Infos/bd/config10
Ouvrir une fenêtre de terminal (xterm), pour exécuter les commandes suivantes :
^ commande | ^ description |
cd | aller dans votre répertoire $HOME |
tar zxvf $BD_TOOL/dtd.tgz | installer l'archive dtd.tgz dans votre répertoire principal |
cd dtd | aller dans votre répertoire de travail |
emacs ville.dtd & | éditer le fichier définissant le type des données |
File > Open ville.xml & | éditer le fichier contenant les données |
Validation
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 : valide fichier.xml. Exemple :
- valide ville.xml
Exercice : voir poly
Questions / réponses fréquentes
- Un élément X vide peut s'écrire indifé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 « ! ».
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+)>
Documentation
Lire la documentation avant la séance de TME.
La syntaxe du langage XML
La spécification XML traduite en français, un tutoriel XML.
Le type d'un document XML : DTD
Un tutoriel sur les DTD (exemples 1 à 8).