cours Cours XML
© Magali Contensin ;
1999 - 2007
 

Déclaration d'éléments

Rappelons qu'un élément permet de structurer le document (par exemple livre est un élément d'un document bibliothèque, en HTML p, h1, form... sont des éléments).

La déclaration d'éléments est de la forme :

<!ELEMENT nom_element modele_de_contenu>

Élément vide

Un élément vide ne contient aucun texte, aucun autre élément, comme les éléments IMG, HR, BR de HTML. <!ELEMENT nom_element EMPTY>

Par exemple, dans la DTD de XHTML 1.0 l'élément img est déclaré : <!ELEMENT img EMPTY>

Élément non vide

Un élément non vide est formé d'une balise ouvrante, d'un contenu et d'une balise fermante. Pour décrire ce contenu dans la DTD on utilise un modèle de contenu dans la déclaration d'éléments.

Données

Si l'élément contient uniquement des données (autrement dit, s'il n'y a aucun autre élément inclus dans cet élément) on utilise le type #PCDATA qui signifie Parsed Character DATA i.e. données caractères analysées : <!ELEMENT nom_element (#PCDATA)>

Par exemple, dans la DTD de XHTML 1.0 l'élément title qui permet de donner le titre de la fenêtre est déclaré : <!ELEMENT title (#PCDATA)>

Conteneur d'éléments

Si l'élément contient uniquement d'autres éléments, le modèle de contenu définit les éléments pouvant être inclus dans un élément donné et spécifie également les éléments devant apparaître obligatoirement, leur ordre et leur fréquence.

Les parenthèses dans la déclaration d'élément introduisent les éléments enfants de l'élément défini. L'ordre dans lequel les éléments sont précisés est l'ordre dans lequel ils doivent apparaître dans l'élément en cours de définition. Par exemple, dans la DTD de XHTML 1.0 l'élément racine html qui contient les éléments head et body est déclaré <!ELEMENT html (head, body)>.

Les indicateurs d'occurrences sont les suivants :

Par exemple, dans la DTD de XHTML 1.0 l'élément ul est déclaré : <!ELEMENT ul li+>

Pour indiquer des choix, il est possible d'utiliser le |. Dans la DTD XHTML1.0 l'élément dl est déclaré : <!ELEMENT dl (dt|dd)+>

Contenu mixte

Si l'élément a un contenu mixte (données + éléments) il est possible d'utiliser PCDATA et les éléments imbriqués. Par exemple, dans la DTD de XHTML 1.0 l'élément object est déclaré : <!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>

Élément libre

Élément qui peut contenir tout élément déclaré dans la DTD et du texte. <!ELEMENT nom_element ANY>

Exemple

Voici la DTD qui peut être utilisée pour le document bibliothèque. <!ELEMENT bibliotheque (livre+)> <!ELEMENT livre (titre, auteur, ref)> <!ELEMENT titre (#PCDATA)> <!ELEMENT auteur (nom, prenom)> <!ELEMENT nom (#PCDATA)> <!ELEMENT prenom (#PCDATA)> <!ELEMENT ref (#PCDATA)>

DTD interne

Avec une DTD interne le document XML serait le suivant : <?xml version="1.0"?> <!DOCTYPE bibliotheque [ <!ELEMENT bibliotheque (livre+)> <!ELEMENT livre (titre, auteur, ref)> <!ELEMENT titre (#PCDATA)> <!ELEMENT auteur (nom, prenom)> <!ELEMENT nom (#PCDATA)> <!ELEMENT prenom (#PCDATA)> <!ELEMENT ref (#PCDATA)> ]> <bibliotheque> ... </bibliotheque>

biblio avec DTD interne

DTD externe

Avec la même DTD mais externe on aurait alors dans le fichier externe biblio.dtd : <!ELEMENT bibliotheque (livre+)> <!ELEMENT livre (titre, auteur, ref)> <!ELEMENT titre (#PCDATA)> <!ELEMENT auteur (nom, prenom)> <!ELEMENT nom (#PCDATA)> <!ELEMENT prenom (#PCDATA)> <!ELEMENT ref (#PCDATA)>

et dans le document XML : <?xml version="1.0"?> <!DOCTYPE bibliotheque SYSTEM "biblio.dtd"> <bibliotheque> ... </bibliotheque>

biblio avec DTD externe

haut
css html
imprimer