Introduction |
Caractères |
Entités prédéfinies |
Entités générales |
Entités paramètres |
Déclaration d'entités |
Utilisation |
Notations |
Annexe : Références |
En XML, Une entité désigne une unité de stockage. Une entité possède un nom et un contenu. La DTD ainsi que le document lui-même (racine) forment des entités particulières.
On considère deux types de contenus d'entités :
NOTATION
.
Comme en HTML, il est possible d'appeler un caractère particulier à partir de son code ASCII (voir aussi document INRIA).
Syntaxe : &#code_ascii;
La valeur du code ascii peut s'exprimer en décimal ou en hexa (en le précédant de x).
Exemples : A (A), @ (@)
Les entités suivantes sont utilisées pour le déguisement de caractères de balisage et n'ont pas besoin d'être déclarées :
<
(<)
>
(>)
&
(&)
'
(')
"
(")
Les entités générales sont déclarées dans la DTD et appelées soit dans la DTD, soit dans le document XML.
Syntaxe d'appel : &nom_entité;
Le contenu de l'entité sera placé à l'endroit de l'appel avant analyse de la syntaxe.
Les entités paramètres sont déclarées dans la DTD et appelées exclusivement dans la DTD.
Syntaxe d'appel : %nom_entité;
Le contenu de l'entité sera placé à l'endroit de l'appel avant analyse de la DTD.
Toutes les entités se déclarent dans la DTD. Lorsque des entités font référence à des URL, le document XML ne peut pas spécifier standalone="yes"
dans sa déclaration XML.
Lorsqu'un même nom d'entité est déclaré deux fois dans le même registre (général ou paramètre), seule la première définition est retenue.
<!ENTITY nom_entité définition>
<!ENTITY mx "<abc>abcdef</abc>">
<!ENTITY cd "&mx;">
<!ENTITY xhtml SYSTEM "xhtml.dtd">
<!ENTITY xhtml PUBLIC "nom_public" "url_ressource">
<!ENTITY logo_porsche SYSTEM "http://www.porsche.com/bilder/entry/porschelogo.gif" NDATA gif>
NDATA
doit se référer à une NOTATION
définie par ailleurs.
<!ENTITY % nom_entité définition>
(blanc obligatoire après %)
<!ENTITY % a "A">
<!ENTITY % xhtml SYSTEM "xhtml.dtd">
<!ENTITY % xhtml PUBLIC "nom_public" "url_ressource">
Note sur l'identifiantPUBLIC
(Extrait traduit d'un article paru sur xml.com)
XML 1.0 offre une séparation entre le nom et l'adressage des ressources. Les identificateurs SYSTEM définissent une ressource réelle, alors que les identificateurs PUBLIC donnent simplement un nom pour la ressource. L'identificateur système est une information complémentaire qui peut être utilisée par l'application pour localiser la ressource dans le cas notamment où l'URL ne répond pas.
Déclaration XML dans les fichiers importés
Un fichier importé par une entité peut contenir une déclaration XML dans son prologue. Celle-ci peut contenir la version XML et l'encodage des caractères. Cette déclaration ne fait pas partie des caractères importés.
Exemple :<?xml version='1.0' encoding='us-ascii'?>
VII. Tableau d'utilisation des entités
Type d'entité | Caractère | ||||
paramètre | interne générale |
externe analysable générale |
non-analysable | ||
Appel dans le contenu |
Non reconnu | Inclus | Inclus si validation | Interdit | Inclus |
Appel dans une valeur d'attribut |
Non reconnu | Inclus dans littéral | Interdit | Interdit | Inclus |
Valeur d'attribut | Non reconnu | Interdit | Interdit | Signalé | Non reconnu |
Appel dans une valeur d'entité |
Inclus dans littéral | Non interprété | Non interprété | Interdit | Inclus |
Appel dans la DTD | Inclus comme EP | Interdit | Interdit | Interdit | Interdit |
Les balises NOTATION
identifient le format de données non-XML,
et désignent les applications qui doivent être utilisées pour interpréter ces données.
La notation associe un nom et une ressource, cette dernière n'étant pas lue.
Un nom de notation ne doit être défini qu'une seule fois dans un document.
Syntaxe :
<!NOTATION nom identifiant>
L'identifiant est une ressource PUBLIC ou SYSTEM.
Exemples :
<!NOTATION gif PUBLIC "image gif" "gif viewer">
<!NOTATION jpg SYSTEM "image.jpg">
Utilisation
<!ATTLIST balise attribut NOTATION (gif | jpg) #IMPLIED>
<!ENTITY image SYSTEM "image.gif" NDATA gif>