cours Cours XML
© Magali Contensin ;
1999 - 2007
 

Déclaration d'entités

Chaque entité XML est définie dans une DTD. Les entités spécifiques au document sont présentes dans sa DTD interne (images, autres documents non XML, caractères spécifiques). Une entité est un alias associant un nom à un groupe de données. Ces données peuvent prendre un ou plusieurs formats.

Entités paramètres

<!ENTITY % nom "chaîne_de_remplacement">

Ces entités apparaîssent uniquement dans les DTD. Ce sont des raccourcis vers des parties de déclarations de la DTD.

Par exemple dans la DTD de XHML1.0 on a la déclaration d'entité :
<!ENTITY % Shape "(rect|circle|poly|default)">

qui est ensuite utilisée dans la déclaration d'attributs pour l'élément area :
<!ATTLIST area %attrs; shape %Shape; "rect" coords %Coords; #IMPLIED href %URI; #IMPLIED nohref (nohref) #IMPLIED alt %Text; #REQUIRED tabindex %Number; #IMPLIED accesskey %Character; #IMPLIED onfocus %Script; #IMPLIED onblur %Script; #IMPLIED >

Entités caractères

<!ENTITY nom "&#code;">

Ces entités associent un alias à un caractère non disponible sur le clavier, dans le document l'appel s'effectue avec &nom;. Rappelons que les caractères réservées &, <, >, ", ', sont déjà définis et n'ont pas à être redéfinis par des entités dans la DTD

La DTD XHTML1.0 définit le caractère mathématique "il existe" et le caractère de l'alphabet grec "delta" : <!ENTITY exist "&#8707;"> <!-- there exists, U+2203 ISOtech --> <!ENTITY delta "&#948;"> <!-- greek small letter delta, U+03B4 ISOgrk3 -->

Entités générales

<!ENTITY nom "texte">

Transforme l'alias (nom) en une phrase incluse dans la déclaration de l'entité. C'est l'équivalent d'une macro.

Par exemple <!ENTITY wysiwyg "What You See Is What You Get">

permet d'utiliser dans le document XML : les éditeurs de type &wysiwyg;

ce qui deviendra dans un navigateur : les éditeurs de type What You See Is What You Get.

Entités externes

Les entités externes représentent des données contenues dans des fichiers séparés par rapport au document XML.

Analysées

<!ENTITY nom SYSTEM "URI">

Les fichiers contenant des données textuelles sont analysés. Par exemple un livre peut être constitué des documents toc.xml, chapters/c1.xml, chapters/c2.xml et index.xml : <!doctype book SYSTEM "book.dtd" [ <!entity toc SYSTEM "toc.xml"> <!entity chap1 SYSTEM "chapters/c1.xml"> <!entity chap2 SYSTEM "chapters/c2.xml"> <!entity index SYSTEM "index.xml"> ]> <book> <head>&toc;</head> <body> &chap1; &chap2; &index; </body> </book>

Non analysées

<!ENTITY nom SYSTEM "URI" NDATA type_notation>

Les entités externes non analysées permettent de déclarer un contenu non XML dans le document XML (fichiers binaires images, sons...). Le mot clé NDATA (Notation DATA) précise le type d'entité non analysée que le processeur XML doit traiter.

Par exemple, la déclaration d'entité ci-dessous attribue un alias (vacances) à une entité (images/plage.gif) de type GIF89a sauvegardée sur le disque (SYSTEM) : <!ENTITY vacances SYSTEM "images/plage.gif" NDATA GIF89a>

Les fichiers binaires (images, sons...) doivent être identifiés par une notation qui a été déclarée dans la DTD. Par exemple, la notation GIF89a utilisée dans l'exemple précédent est déclarée dans la DTD :
<!NOTATION GIF89a PUBLIC "-//Compuserve//NOTATION Graphics Interchange Format 89a//EN">

Les entités binaires ne peuvent être appelées que dans la valeur d'un attribut, lui-même déclaré comme étant du type ENTITY ou ENTITIES dans la DTD. La DTD comportera donc : <!NOTATION GIF89a PUBLIC "-//Compuserve//NOTATION Graphics Interchange Format 89a//EN"> <!ATTLIST image source ENTITY #REQUIRED> <!ENTITY vacances SYSTEM "images/plage.gif" NDATA GIF89a>

ce qui permettra dans le document XML d'appeler l'image : <image source="vacances">

haut
css html
imprimer