XML permet de créer des entités, c'est-à-dire de déclarer
un groupe d'éléments sous un nom afin de ne pas avoir à réécrire
ces derniers plusieurs fois dans la DTD s'ils se répètent, dans le même
esprit que les macros dans les éditeurs de texte. D'autre part, l'utilisation d'entités
dans un document XML permet :
- une meilleure lisibilité
- un contrôle accru sur le contenu
- une plus grande facilité de mise à jour
On distingue plusieurs types d'entités dans XML :
- les entités générales
- les entités paramètres
- les entités caractères
Les entités générales permettent de définir des
éléments pouvant être substitués dans le corps
du document XML (bien qu'ils soient définis au sein de la DTD et non du document
XML lui-même). La syntaxe d'une entité générale
est la suivante :
<! ENTITY nom_de_l_entite "Contenu de l'entite">
Il est par exemple possible de déclarer l'entité générale suivante
dans la DTD :
<! ENTITY site "commentcamarche.net">
Les entités définies dans la DTD peuvent ainsi être utilisées
dans le code XML en les appelant avec la syntaxe suivante :
&nom_de_l_entite;
La déclaration précédente pourra donc donner un document XML du style:
<personne>
<nom>Pillou</nom>
<prenom>Jean-Francois</prenom>
<site>&site;</site>
<email>webmaster@&site;</email>
</personne>
Le parseur transformera automatiquement chacune des entités contenues dans le code XML, en
chaînes de caractères :
<personne>
<nom>Pillou</nom>
<prenom>Jean-Francois</prenom>
<site>commentcamarche.net</site>
<email>webmaster@commentcamarche.net</email>
</personne>
Les entités générales peuvent aussi être contenues dans un fichier
extérieur (afin d'être utilisé par plusieurs DTD par exemple), on parle alors
d'entité externe. La syntaxe d'une entité externe est la suivante :
<! ENTITY nom_de_l_entite SYSTEM "nom_du_fichier">
Dans l'exemple suivant, le contenu du fichier ccm.txt (situé dans le même
répertoire que la DTD) sera inséré
dans le fichier XML à chaque fois que l'entité &ccm; sera rencontrée :
<! ENTITY ccm SYSTEM "ccm.txt">
Les entités paramètres permettent d'utiliser des entités dans les DTD
elles-même. La syntaxe de la déclaration d'une entité paramètre
est la suivante :
<! ENTITY % nom_de_l_entite definition>
Le nom de l'entité doit toutefois suivre certaines règles :
- Commencer par une lettre ou un sous-tiret (_)
- Etre composé uniquement de lettres, de chiffres, de tirets (-),
de sous-tirets (_),de points (.) ou du caractère 'deux points' (:)
Voici un exemple de déclaration d'entité paramètre :
<! ENTITY % ccm #REQUIRED type(K7|MiniDisc|Vinyl) "CD">
D'autre part, il est également possible (comme pour les entités
générales) de définir une entité paramètre externe
grâce à la syntaxe suivante :
<! ENTITY % nom_de_l_entite SYSTEM "fichier.dtd">
La DTD fichier.dtd sera un fichier comportant la déclaration d'entité
paramètre :
<! ENTITY % nom_de_l_entite definition">
Les entités caractères sont des caractères réservés du XML
représentés sous forme d'entités générales afin de
pouvoir insérer ces caractères réservés dans le document XML.
Voici la liste des entités caractères principales :
Entité caractère |
Représentation |
& |
& |
< |
< |
> |
> |
' |
' |
" |
" |
Il est également possible de définir des entités caractères
pour n'importe quel caractère en utilisant le code hexadécimal du caractère :
<! ENTITY nom_de_l_entite "ODEHEXA;">
Par exemple
<! ENTITY ccedille "ç">
|