Difficulté Facile
Note
Thématiques
Mis à jour le lundi 17 février 2014

Une autre notion assez importante concernant le DTD est la notion d'entité.

Définition

Une entité peut-être considérée comme un alias permettant de réutiliser des informations au sein du document XML ou de la définition DTD.

Au cours de ce chapitre, nous reviendrons sur les 3 types d'entités qui existent : les entités générales, les entités paramètres et les entités externes.

Les entités générales

Définition

Les entités générales sont les entités les plus simples. Elles permettent d'associer un alias à une information afin de l'utiliser dans le document XML.

La syntaxe

Voyons tout de suite la syntaxe d'une entité générale :

<!ENTITY nom "valeur">

Pour utiliser une entité générale dans notre document XML, il suffit d'utiliser la syntaxe suivante :

&nom;

Afin d'illustrer un peu plus clairement mes propos, voyons tout de suite un exemple :

<!ENTITY samsung "Samsung">
<!ENTITY apple "Apple">

<telephone>
    <marque>&samsung;</marque>
    <modele>Galaxy S3</modele>
</telephone>
<telephone>
    <marque>&apple;</marque>
    <modele>iPhone 4</modele>
</telephone>

Au moment de son interprétation, les références aux entités seront remplacées par leurs valeurs respectives, ce qui donne une fois interprété :

<telephone>
    <marque>Samsung</marque>
    <modele>Galaxy S3</modele>
</telephone>
<telephone>
    <marque>Apple</marque>
    <modele>iPhone 4</modele>
</telephone>

Les entités paramètres

Définition

Contrairement aux entités générales qui apparaissent dans les documents XML, les entités paramètres n'apparaissent que dans les définitions DTD. Elles permettent d'associer un alias à une partie de la déclaration de la DTD.

La syntaxe

Voyons tout de suite la syntaxe d'une entité paramètre :

<!ENTITY % nom "valeur">

Pour utiliser une entité paramètre dans notre DTD, il suffit d'utiliser la syntaxe suivante :

%nom;

Prenons par exemple ce cas où des téléphones ont pour attribut une marque :

<telephone marque="Samsung" />
<telephone marque="Apple" />

Normalement, pour indiquer que l'attribut marque de la balise <telephone/> est obligatoire et qu'il doit contenir la valeur Samnsung ou Apple, nous devons écrire la règle suivante :

<!ATTLIST telephone marque (Samsung|Apple) #REQUIRED>

À l'aide d'une entité paramètre, cette même règle s'écrit de la façon suivante :

<!ENTITY % listeMarques "marque (Samsung|Apple) #REQUIRED">
<!ATTLIST telephone %listeMarques; >

Encore une fois, au moment de son interprétation, les références aux entités seront remplacées par leurs valeurs respectives.

Les entités externes

Définition

Il existe en réalité 2 types d'entités externes : les analysées et les non analysées. Dans le cadre de ce cours, nous nous limiterons aux entités externes analysées.

Les entités externes analysées ont sensiblement le même rôle que les entités générales, c'est à dire qu'elles permettent d'associer un alias à une information afin de l'utiliser dans le document XML. Mais, dans le cas des entités externes analysées, les informations sont stockées dans un fichier séparé.

La syntaxe

Voyons tout de suite la syntaxe d'une entité externe :

<!ENTITY nom SYSTEM "URI">

Pour utiliser une entité externe dans notre XML, il suffit d'utiliser la syntaxe suivante :

&nom;

Si l'on reprend notre premier exemple, voici ce que cela donne :

<!ENTITY samsung SYSTEM "samsung.xml">
<!ENTITY apple SYSTEM "apple.xml">

<telephone>
    &samsung;
    <modele>Galaxy S3</modele>
</telephone>
<telephone>
    &apple;
    <modele>iPhone 4</modele>
</telephone>

Le contenu des fichiers samsung.xml et apple.xml sera par exemple le suivant :

<!-- Contenu du fichier samsung.xml -->
<marque>Samsung</marque>

<!-- Contenu du fichier apple.xml -->
<marque>Apple</marque>

Au moment de son interprétation, les références aux entités seront remplacées par leurs valeurs respectives, ce qui donne une fois interprété :

<telephone>
    <marque>Samsung</marque>
    <modele>Galaxy S3</modele>
</telephone>
<telephone>
    <marque>Apple</marque>
    <modele>iPhone 4</modele>
</telephone>
  • Le mot clef ATTLIST permet d'écrire les règles relatives aux attributs d'une balise.

  • Les entités permettent de jouer les fainéants en réutilisant des éléments qui reviennent souvent dans un document.

L'auteur