« Programmation XML/Définition de Type Document » : différence entre les versions

Contenu supprimé Contenu ajouté
m +menu {{Programmation XML}}
Shawn (discussion | contributions)
Aucun résumé des modifications
Ligne 1 :
{{Programmation XML}}
La '''définition de type de document''' (DTD) est un document servant à définir une structure commune pour une famille de documents XML. La définition de type de document est une des technologies les plus fondamentales de XML, puisque c'est elle qui permet de créer les ''dialectes'' XML, comme XSL ou MathML.
La DTD n'est pas obligatoire. Elle peut être interne au document XML ou bien externe (dans un fichier à l'extension '.dtd').
 
La DTD commence par la balise : <pre><!DOCTYPE nom-element-racine [</pre>
et se termine par : <pre>]></pre>
 
La DTD doit être placée après la déclaration initiale XML.
 
Chaque élément de la DTD est défini de la manière suivante :
<pre><!ELEMENT nom-element qualificateur></pre>
 
Les qualifieurs possibles sont :
 
* '''ANY''' : la structure de l'élément est libre
* '''#PCDATA(Parsed Character Data)''' : donnée textuelle analysable
* '''EMPTY''' : l'élément est vide
 
On peut préciser ces qualifieurs grâce aux éléments suivants :
 
* un et un seul sous-élément :
(un seul téléphone par personne)
<pre><!ELEMENT personne(telephone)></pre>
* 0 ou plusieurs sous-éléments :
(une personne peut avoir 0, 1 ou plusieurs téléphones)
<pre><!ELEMENT personne(telephone*)></pre>
* 1 ou plusieurs éléments :
(une personne doit avoir au moins un télephone)
<pre><!ELEMENT personne(telephone+)></pre>
* 0 ou 1 seul élement :
(une personne a au maximum 1 téléphone, elle peut ne pas en avoir)
<pre><!ELEMENT personne(telephone?)></pre>
 
* Plusieurs sous-éléments différents :
(une personne a un nom et un téléphone)
<pre><!ELEMENT personne(nom, telephone)></pre>
* Des sous-éléments identiques ou non :
(une personne a un nom et deux numéros de téléphone)
<pre><!ELEMENT personne(nom, telephone, telephone)></pre>
* Un sous-élément OU (exclusif) un autre :
(un ou deux téléphone par personne)
<pre><!ELEMENT personne(telephone|(telephone, telephone))></pre>
 
 
 
 
Exemple : ''Stockage d'un repertoire de services. Chaque service a un nom et peut avoir un ou plusieurs téléphone(s)''
<pre>
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE repertoire [
<!ELEMENT repertoire (service)*>
<!ELEMENT service (nom, tel*)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT tel (#PCDATA)>
]>
<repertoire>
<service>
<nom>pompiers</nom>
<tel>18</tel>
</service>
<service>
<nom>police</nom>
<tel>17</tel>
<tel>22</tel>
</service>
<service>
<nom>samu</nom>
<tel>15</tel>
</service>
</repertoire>
</pre>