Martin Sévigny - Frédéric Glorieux - AJLSM

Les entités

1.1. Entités prédéfinies
1.2. Entité XML définie dans le document
1.3. Entité XML définie à l'extérieur du document
1.4. Entité non XML

Les entités sont des substituts pour des séquences d'information (Comme la variable x en algèbre : (2x)+(4x)=x(2+4)). Ces entités peuvent être définies dans l'en-tête de tout document XML (surtout dans les DTDs, mais aussi dans d'autres syntaxes de schémas). On peut y faire référence autant de fois que l'on veut dans un document. C'est un mécanisme de factorisation documentaire permettant d'isoler des composants répétitifs (caractères spéciaux, noms, fichiers ...), afin par exemple, d'en faciliter la maintenance. Il existe plusieurs types, nous verrons les plus simples ici.

1) Entités prédéfinies

Il existe 5 entités prédéfinies en XML, elles sont indispensables. Elles répondent au besoin d'un "échappement" que l'on retrouve dans la plupart des syntaxes informatiques s'appuyant sur des caractères spéciaux. Soit un tableau que l'on veut représenter en format texte. On pourra utiliser le caractère "|" comme séparateur de colonne. Que se passe-t-il si une case contient un "|" ? Toute la structure du tableau sera bousculée... Un document XML s'exposerait au mêmes conséquences si les caractères qui suivent n'étaient pas définis

Les entitès prédéfinies

lt:      caractère '<'
gt:      caractère '>'
amp:     caractère '&'
quot:    caractère '"' (guillement double)
apos:    caractère "'" (guillement simple ou apostrophe)

Un éditeur XML sait ainsi avertir l'utilisateur si son document est bien formé, si par exemple il n'a pas laissé un '>', ou un '&', impossible à interpréter comme un élément ou une entité.

2) Entité XML définie dans le document

Une telle entité sert en général d'abbréviation pour des informations répétitives ou qui peuvent être modifiées en bloc:

<?xml version="1.0"?>
<!DOCTYPE démo [
  <!ELEMENT démo (#PCDATA|important)>
  <!ELEMENT important (#PCDATA)>
  <!ENTITY cie "Les aliments de Bordeaux SA">
  <!ENTITY imp "<important>Attention!</important>">
]>
<démo>
  &cie;
  &imp;
</démo>

Ce document déclare les entités cie et imp, et les utilise. Pour ce faire, on utilise une balise formée du caractère "&", suivi du nom de l'entité, suivi du caractère ";".

Le document précédent est équivalent au suivant:

<?xml version="1.0"?>
<!DOCTYPE démo [
  <!ELEMENT démo (#PCDATA|important)>
  <!ELEMENT important (#PCDATA)>
  <!ENTITY cie "Les aliments de Bordeaux SA">
  <!ENTITY imp "<important>Attention!</important>">
]>
<démo>
  Les aliments de Bordeaux SA
  <important>Attention!</important>
</démo>

Un parseur XML fournira à une application exactement la même information dans les deux cas.

3) Entité XML définie à l'extérieur du document

Les entités définies à l'extérieur des documents sont utilisées de la même façon mais sont déclarées de cette façon:

<?xml version="1.0"?>
<!DOCTYPE doc [
  <!ENTITY chap1 SYSTEM "../chapitres/chap1.xml">
  <!ENTITY chap2 SYSTEM "../chapitres/chap2.xml">
]>
<doc>
  &chap1;
  &chap2;
</doc>

Dans cet exemple, on suppose que les fichiers "chap1.xml" et "chap2.xml" contiennent les chapitres marqués en XML.

4) Entité non XML

Les entités non XML peremettent de déclarer des documents (ou plus généralement de l'information) qui n'est pas en format XML, par exemple des composantes multimédia (images, son, vidéo, etc.). Ils nécessitent l'utilisation des notations, ce que nous ne verrons pas ici.

Il est important de noter que les entités non XML ne sont pas nécessaires pour inclure des composantes multimédias dans les documents XML.