ENTITY (XML)

L'instruction ENTITY permet de définir des entités dans la DTD à utiliser dans le document XML associé à la DTD et dans la DTD proprement dite.Elle fournit une entrée abrégée à placer dans votre document XML.Le nom abrégé est celui que vous entrez pour le paramètre de nom.Les entités sont très utiles pour répéter des informations ou des blocs de texte volumineux pouvant être stockés dans des fichiers distincts.Le nom abrégé est suivi par un point-virgule dans le document XML (&NomAb;)

Vous trouverez ci-dessous des exemples d'entités utilisées dans une DTD et dans un fichier XML.

longtext.txt

Voici le contenu de longtext.txt :

<definition>ATTLIST(attribute list) Declares a list of XML attributes.These attributes are qualified by name, data type, implied default values, and the name of any elements that permit their use.

</definition>

dtd_chunk.dtd

<!ELEMENT list >
<!ATTLIST list list_type (ul | ol)>

sample.dtd

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE dtd_sample[
<!ELEMENT file_info>
<!ATTLIST file_info name #REQUIRED>

<!ENTITY xml "eXtensible Markup Language">
<!ENTITY attlist_def SYSTEM "longtext.txt">
<!ENTITY % lists "(ol | ul)">
<!ENTITY % dtd_chunk SYSTEM "chunk.dtd">
<!ENTITY file_pic SYSTEM "file.jpg" NDATA jpg>
<!NOTATION jpg SYSTEM "image/jpeg">
%dtd_chunk;
<!ELEMENT icon EMPTY>
<!ATTLIST icon source ENTITY #REQUIRED>
<!ATTLIST icon list_type &lists;>
]>

Lorsque vous analysez le document DTD, vous obtenez les résultats suivants.Notez que ce remplacement n'est effectué qu'en mémoire.En réalité, l'analyseur ne modifie pas le fichier.

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE dtd_sample[
<!ELEMENT file_info>
<!ATTLIST file_info name #REQUIRED>
<!ENTITY xml "eXtensible Markup Language">
<!ENTITY attlist_def SYSTEM "longtext.txt">

<!ENTITY % dtd_chunk SYSTEM "chunk.dtd">
<!ENTITY file_pic SYSTEM "file.jpg" NDATA jpg>
<!NOTATION jpg SYSTEM "image/jpeg">
<!ELEMENT list >
<!ATTLIST list list_type (ul | ol)>
<!ELEMENT icon EMPTY>
<!ATTLIST icon source ENTITY #REQUIRED>
<!ATTLIST icon list_type (ol | ul)>
]>

sample.xml

<?xml version="1.0" standalone="no" ?>
<heading>Definition list for &xml; attributes used in DTD files.</heading>
    <file_info name="topfile">
        <icon source="file_pic"/>
        <list list_type="ul"/>
        %attlist_def
    </file_info>
<footer>Conclusion of definition list for &xml; attributes.</footer>

Résultats du document XML analysé

Lorsque vous analysez le document XML, vous obtenez les résultats suivants :

Definition list for eXtensible Markup Language attributes used in DTD files.

top file

ATTLIST(attribute list) Declares a list of XML attributes.These attributes are qualified by name, data type, implied default values, and the name of any elements that permit their use.

Conclusion of definition list for eXtensible Markup Language attributes.

Syntaxe

<!ENTITY [%] name [SYSTEM|PUBLIC publicID] resource [NDATA notation] >

Paramètres

  • name
    Nom de l'entité.Obligatoire pour toutes les définitions d'entités.

  • publicID
    Identificateur public de l'entité.Obligatoire uniquement si la déclaration utilise le mot clé PUBLIC.

  • resource
    Valeur de l'entité.Obligatoire pour toutes les définitions d'entités.Dans le cas d'entités internes, il s'agit d'une chaîne de texte qui est analysée et étendue.Dans le cas d'entités externes, il s'agit d'un URI (Uniform Resource Identifier) qui identifie une entité externe telle qu'un nom ou un type de fichier.

  • notation
    Nom d'une notation déclaré ailleurs dans la DTD à l'aide de l'instruction NOTATION.Obligatoire uniquement lors de la déclaration d'une entité non analysée à l'aide du mot clé de données non-XML (NDATA).

Exemples

Entité générale (analysée en interne)

La syntaxe suivante déclare une entité générale interne qui peut être qualifiée de &oumlaut; et de &xml; dans des documents XML qui utilisent la DTD.

<!ENTITY oumlaut "&#38;#246;">

ou un exemple de simple substitution de texte est

<!ENTITY xml "eXtensible Markup Language">

L'analyseur XML étend la valeur brute (&#38;#246;) de l'entité pour l'intégrer au document XML interne.Dans le document final analysé, la valeur « &#38; » permet de créer le caractère « & » et la valeur apparaît dans le document XML sous la forme « &#246; ».

Entité de paramètre (analysée en interne)

La syntaxe suivante déclare une entité de paramètre interne qui peut être qualifiée de %lists; à d'autres endroits de la DTD.Elle permet de faire plusieurs fois référence aux éléments de la liste XHTML, <ul> et <ol>.

<!ENTITY % lists "ul | ol">

Entité externe non analysée

La syntaxe suivante déclare une entité externe non analysée qui vous permet d'encoder des liens vers des données non-XML (dans ce cas, un fichier image au format GIF) à inclure dans votre document XML.

<!ENTITY file_pic SYSTEM "file.jpg" NDATA jpg>

Dans ce cas, l'utilisation du mot clé NDATA requiert également l'utilisation d'une déclaration NOTATION pour une notation appelée « jpg » en combinaison avec cette dernière.Pour plus d'informations, voir NOTATION.

Remarques

Les entités peuvent être utilisées de diverses manières.Si vous n'êtes pas certain de la méthode à utiliser pour les définir, les questions suivantes peuvent vous éclairer sur les différentes conditions d'utilisation des entités que vous déclarez dans la DTD :

  • La valeur de l'entité sert-elle simplement à abréger une chaîne de texte volumineuse susceptible de changer au cours de la vie du document ?Dans l'affirmative, utilisez une entité générale.

  • Est-elle utilisée en tant que pointeur désignant un élément externe au document DTD ou XML (c'est-à-dire, des entités externes) tel qu'un nom de fichier ou un type de contenu MIME ?Dans l'affirmative, utilisez une entité externe non analysée.

  • La valeur URI de l'entité doit-elle être analysée (c'est-à-dire étendue comme faisant partie de la DTD ou d'un document XML qui l'utilise) ou non (c'est-à-dire que l'analyseur XML supprime son contenu du document final analysé) ?

  • Si elle est analysée, le contenu de l'entité étendue doit-il faire partie du document XML qui utilise la DTD (c'est-à-dire, des entités générales) ou de la DTD proprement dite (c'est-à-dire des entités de paramètre) ?

Voir aussi

Concepts

ATTLIST (Liste d'attributs)

ELEMENT

NOTATION