Partie III-1-2 Création de la DTD du document XML |
||
Partie III-1 | Partie III-2 | |
Partie III-1-1 | Suite |
Voir partie : la feuille XML.
Un document XML est une arborescence. Donc la racine de l'arbre XML doit être définie comme un élément dans le DTD .
La DTD permet de définir certaines règles de l'arborescence du doc xml . Pour cela il se sert d'éléments, d'entités, d'attributs, .....
Cette partie est surtout consacrée à eux.
1. Déclaration d'éléments
Un élément est une suite logique d'info à l'intérieur du document xml .
Il se déclare ainsi dans la DTD :
<!ELEMENT tag specification (contenu)> | La spécification du contenu d'un élément contient soit une combinaison d'autres éléments , soit des éléments spéciaux. |
Exemple : <!ELEMENT personnene (nom,email*)>
<personnene> peut contenir les éléments nom et email.
* : <adresse> peut apparaître n fois dans <personnene> n étant compris entre 0 et l'infini.
On peut donc utiliser les éléments suivant certaines règles :
De plus les éléments spéciaux permettent de créer des balises qui normalement serait refusées par la DTD.
Un exemple nous permet de voir ces concepts :
Ainsi la DTD suivante :
<!DOCTYPE carnet [ <!ELEMENT carnet (personnene)+> <!ELEMENT personnene (nom,email*)> <!ELEMENT nom (famille,prenom)> <!ELEMENT famille (#PCDATA)> <!ELEMENT prenom (#PCDATA)> <!ELEMENT email (#PCDATA)> ]> |
Cette DTD nous permet de concevoir la hiérarchie du document xml. |
Ainsi le document xml suivant :
<carnet> <personnene> <nom> <famille>Dupouy</famille> <prenom>Sylvain</prenom> </nom> <email>dup.sly@wanadoo.fr</email> </personnene> <personnene> <nom> <famille>Bonnafous</famille> <prenom>Pierre</prenom> </nom> <email>Pedro.Bonnafous@wanadoo.fr</email> </personnene> </carnet> |
Ce document est valide car il respecte la DTD créée précédemment . |
Attention : Tout non respect de la DTD (règles fixées) rend le document invalide et donc illisible par l'analyseur de syntaxes Xml.
2.Déclaration d'attributs
Un attribut est une paire de 'nom_valeur' associée à un élément et fournissant plus d'informations sur le contenu de cet élément .
Il se déclare ainsi :
<!ATTLIST tag nom TypeAttribut TypeAttribut TypeDef Défaut> |
Exemple : <!ATTLIST personnene sexe (homme | femme)
#IMPLIED "homme">
Les tableaux suivants définissent les TypeAttribut et les
TypeDef :
Un exemple étant plus parlant, nous vous proposons la DTD suivante pour vous
permettre de caractériser plus précisément la DTD 'carnet' grâce à des attributs :
<!DOCTYPE carnet [ <!ELEMENT carnet (personne)+> <!ELEMENT personne (nom,email*)> <!ATTLIST personne id ID #REQUIRED> <!ATTLIST personne sexe (homme|femme) #IMPLIED> <!ELEMENT nom (#PCDATA|famille|prenom)*> <!ELEMENT famille (#PCDATA)> <!ELEMENT prenom (#PCDATA)> <!ELEMENT email (#PCDATA)> <!ELEMENT link EMPTY> <!ATTLIST link manager IDREF #IMPLIED subordinates IDREFS #IMPLIED> ]> |
Il permet de définir le document XML suivant :
<!DOCTYPE carnet SYSTEM "ab.dtd"> <carnet> <personne id="S.Dupouy" sexe="homme"> <nom> <famille>Dupouy</famille> <prenom>Sylvain</prenom> </nom> <email>dup.sly@wanadoo.fr</email> <link manager="P.Bonnafous"/> </personne> <personne id="P.Bonnafous" sexe="homme"> <nom> <famille>Bonnafous</famille> <prenom>Pierre</prenom> </nom> <email>Pedro.Bonnafous@wanadoo.fr</email> <link subordinates="S.Dupouy"/> </personne> </carnet></pre> |
Par souci d'économiser du temps de téléchargement, nous avons divisé cette partie en deux.