<!-- Une DTD permet de définir l'architecture d'un document XML
Une DTD se fait soit au début du document XML avec la syntaxe suivante

<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE typeDocument [
.
.
.
]>
<typeDocument>
.
.
.
</typeDocument>

soit se fait dans un auter fichier et est appelé par le fichier XML 
avec la commande suivate : 

<?xml version="1.0" encoding="iso-8859-1" standalone="no" ?>
<!DOCTYPE typeDocument SYSTEM "typeDocument.dtd">
<typeDocument>
.
.
.
</typeDocument>

-->

Voici le modèle général pour décrire un élément 'nom_element'
L'expression 'modèle_de_contenu' désigne tout ce qui se situe 
dans l'élément décrit. Ceci peut aussi bien être du contenu que
des autres éléments.

<!ELEMENT nom_element modèle_de_contenu>


Il existe certains types de données prédéfinies : 
--> ANY     : L'élément peut contenir tout type de données
--> EMPTY   : L'élément ne contient pas de données spécifiques
--> #PCDATA : L'élément doit contenir une chaîne de caractères

Lorsqu'un noeud est composé de sous-noeuds, on 
décrit ses fils de premier niveau en précisant 
leurs ordres d'apparition et leurs multiplicités.
Voici les symboles qui permettent de décrire la
multiplicité : 
--> ' ' 	: exactement une fois
--> '?'		: une ou zero fois
--> '+'		: une ou plusieurs fois
--> '*'		: zero ou plusieurs fois

De plus, lorsqu'un noeud est composé de plusieurs sous-noeuds
on utilise les symboles suivants :
--> ','		: séquence
--> '|'		: choix
--> '()'	: les parenthèses permettent de regrouper des éléments
			  afin de leur appliquer des multiplicités


Dans une DTD, on utilise le mot clé ATTLIST pour définir les attributs d'un noeud.
Il faut préciser l'élément concerné, le nom de l'attribut et le type de données de
l'attribut.
<! ATTLIST Elément Attribut1 Type1
				   Attribut2 Type2
				   Attribut3 Type3>

Voici les différents types pour décrire un attribut : 

--> CDATA 			: chaine de caractere
--> (val1|val2 ...) : énumération des valeurs possibles. On peut ajouter une valeur par défaut entre "".
					  <!ATTLIST Voiture Marque (Renault|Peugeot|Citroen|Ferrari|Mercedes|BMW|Autre) "Autre">
--> ID				: décrit un identifiant unique pour chaque élément

De plus, pour chaque attribut, on peut fixer son niveau
de "necessité".
--> #IMPLIED signifie que l'attribut est optionnel
--> #REQUIREDsignifie que l'attribut est obligatoire
--> #FIXEDsignifie que l'attribut sera affecté d'une 
valeur par défaut s'il n'est pas défini. Il doit être immédiatement suivi de la valeur entre guillemets











