fichier dia2.dtd
<?xml version='1.0' encoding='ISO-8859-1' ?>
<!-- fichier dia2.dtd -->
<!-- dtd dialogue --><!ELEMENT dialogue (situation?, replique+) >
un dialogue est composé de 0 ou 1 situation puis de au moins 1 replique
<!ELEMENT situation (#PCDATA) >
une situation est une donnée textuelle PCDATA (Parsed Character Data)
<!ELEMENT replique (personnage, texte) >
une replique est composée de 1 personnage puis de 1 texte
<!ELEMENT personnage (#PCDATA) >
<!ELEMENT texte (#PCDATA) >
fichier dialogue4.xml
<?xml version='1.0' encoding='ISO-8859-1' standalone='yes' ?>
document ne nécessitant pas d'entité externe
<!-- fichier dialogue4.xml --><!DOCTYPE dialogue
déclaration de DTD interne
[
<!ELEMENT dialogue (situation?, replique+) >
<!ELEMENT situation (#PCDATA) >
<!ELEMENT replique (personnage, texte) >
<!ELEMENT personnage (#PCDATA) >
<!ELEMENT texte (#PCDATA) >
]>
<!-- extrait de Tartuffe de Molière -->
<dialogue>
<situation>acte I, Scene 1 : madame pernelle et flipote
sa servante,elmire, mariane, dorine, damis, cléante.</situation>
<replique>
<personnage>madame pernelle</personnage>
<texte>Allons, Flipote, allons, que d'eux je me délivre.</texte>
<texte>Vous marchez d'un te ......
fichier dialogue3.xml
<?xml version='1.0' encoding='ISO-8859-1' standalone='no' ?>
déclaration dans des entités externes au document
<!-- fichier dialogue3.xml -->
<!DOCTYPE dialogue SYSTEM "dia2.dtd">
déclaration de conformité du document à une DTD externe
<!-- extrait de Tartuffe de Molière -->
<dialogue>
<situation>acte I, Scene 1 : madame pernelle et flipote sa servante,elmire, mariane, dorine, damis, cléante.</situation>
........
fichier dia6.dtd DTD externe du document/fichier
xml dialogue6.xml
<?xml version='1.0' encoding='ISO-8859-1' ?>
<!-- fichier dia6.dtd -->
<!-- dtd dialogue --><!ELEMENT dialogue (situation?, replique+) >
<!ELEMENT situation (#PCDATA) >
<!ELEMENT replique (personnage, texte) >
<!ELEMENT personnage (#PCDATA) >
<!ATTLIST personnage attitude CDATA #REQUIRED
geste CDATA #IMPLIED >
l'attribut 'attitude' de l'élément 'personnage' est obligatoire et est une chaine de caractères constante (sans transformation XML), l'attribut 'geste' est facultatif
<!ELEMENT texte (#PCDATA) >
<!ATTLIST texte ton (normal | fort | faible) "normal">
l'attribut 'ton' aura une valeur parmi les 3 de la liste et par défaut celle-ci est "normal"
fichier dialogue5.xml
<?xml version='1.0' encoding='ISO-8859-1' standalone='no' ?>
<!-- fichier dialogue5.xml --><!DOCTYPE dialogue SYSTEM "dia2.dtd"[
<!ENTITY prl "madame pernelle">
entité interne
<!ENTITY elm "elmire">
<!ENTITY dialogue_a SYSTEM "dialogue5a.xml">
entité externe
<!ENTITY dialogue_b SYSTEM "dialogue5b.xml">
]><!-- extrait de Tartuffe de Molière -->
<dialogue>
&dialogue_a;
référence à une entité
&dialogue_b;
</dialogue>
fichier dialogue5a.xml
<?xml version='1.0' encoding='ISO-8859-1' ?>
<!-- fichier dialogue5a.xml --><situation>acte I, Scene 1 : &prl; et flipote sa servante,&elm;, mariane, dorine, damis, cléante.</situation>
<replique>
<personnage>&prl;</personnage>
référence à une entité
<texte>Allons, Flipote, allons, que d'eux je me délivre.</texte>
</replique>
<replique>
<personnage>&elm;</personnage>
<texte>Vous marchez d'un tel pas qu'on a peine à vous suivre.</texte>
</replique>
fichier dialogue5b.xml
....
<!NOTATION flash SYSTEM "/usr/bin/flash.exe">
déclaration de notation associant le format nommé flash à l'application spécifiée
<!ENTITY animation SYSTEM "../anim.fla" NDATA flash>
déclaration de l'entité animation dont le contenu est le fichier de format (NDATA : notation data) non XML
...
<scene loc='animation' />
le "parser" ne verra que la valeur 'animation', mais l'application flash pourra traiter le contenu et donc l'animation
entité de DTD : référençable uniquement dans une DTD !
<!DOCTYPE dialogue SYSTEM "dia2.dtd"[
<!ENTITY % prédialogue SYSTEM "predia2.dtd">
entité paramètre
<!ENTITY % postdialogue SYSTEM "postdia2.dtd">
&prédialogue;
&postdialogue;
]
la DTD est composée des déclarations des 3 fichiers : dia2.dtd predia2.dtd postdia2.dtd
Très utile pour composer une DTD à partir de plusieures autres.
exercice :
Ecrire la DTD pour mettre les differents composants de la situation en attribut de dialogue.
= document bien
formé
+ respecte la structure définie par la DTD
+ résolution des entités