DTD - Entités

Les entités sont utilisées pour définir des raccourcis vers des caractères spéciaux dans les documents XML. Les entités peuvent être principalement de quatre types -

  • Entités intégrées

  • Entités de caractère

  • Entités générales

  • Entités de paramètre

Syntaxe de la déclaration d'entité

En général, les entités peuvent être déclarées internally ou externally. Comprenons chacun de ces éléments et leur syntaxe comme suit -

Entité interne

Si une entité est déclarée dans une DTD, elle est appelée comme entité interne.

Syntax

Voici la syntaxe de la déclaration d'entité interne -

<!ENTITY entity_name "entity_value">

Dans la syntaxe ci-dessus -

  • entity_name est le nom de l'entité suivi de sa valeur entre guillemets ou guillemets simples.

  • entity_value contient la valeur du nom de l'entité.

  • La valeur d'entité de l'entité interne est dé-référencée en ajoutant un préfixe & au nom de l'entité ie & nom_entité.

Example

Voici un exemple simple de déclaration d'entité interne -

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>

<!DOCTYPE address [
   <!ELEMENT address (#PCDATA)>
   <!ENTITY name "Tanmay patil">
   <!ENTITY company "TutorialsPoint">
   <!ENTITY phone_no "(011) 123-4567">
]>

<address>
   &name;
   &company;
   &phone_no;
</address>

Dans l'exemple ci-dessus, les noms d'entités respectifs name , company et phone_no sont remplacés par leurs valeurs dans le document XML. Les valeurs d'entité sont dé-référencées en ajoutant un préfixe & au nom de l'entité.

Enregistrez ce fichier sous sample.xmlet ouvrez-le dans n'importe quel navigateur, vous remarquerez que les valeurs d'entité pour name , company , phone_no sont remplacées respectivement.

Entité externe

Si une entité est déclarée en dehors d'une DTD, elle est appelée comme entité externe. Vous pouvez faire référence à une entité externe en utilisant des identifiants système ou des identifiants publics.

Syntax

Voici la syntaxe de la déclaration d'entité externe -

<!ENTITY name SYSTEM "URI/URL">

Dans la syntaxe ci-dessus -

  • name est le nom de l'entité.

  • SYSTEM est le mot-clé.

  • URI/URL est l'adresse de la source externe entre guillemets simples ou doubles.

Types

Vous pouvez faire référence à une DTD externe en utilisant soit -

  • System Identifiers - Un identifiant système vous permet de spécifier l'emplacement d'un fichier externe contenant les déclarations DTD.

    Comme vous pouvez le voir, il contient le mot-clé SYSTEM et une référence URI pointant vers l'emplacement du document. La syntaxe est la suivante -

<!DOCTYPE name SYSTEM "address.dtd" [...]>
  • Public Identifiers - Les identificateurs publics fournissent un mécanisme pour localiser les ressources DTD et sont écrits comme ci-dessous -

    Comme vous pouvez le voir, il commence par le mot-clé PUBLIC, suivi d'un identifiant spécialisé. Les identificateurs publics sont utilisés pour identifier une entrée dans un catalogue. Les identifiants publics peuvent suivre n'importe quel format; cependant, un format couramment utilisé est appelé identificateurs publics formels ou FPI.

<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">

Example

Comprenons l'entité externe avec l'exemple suivant -

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE address SYSTEM "address.dtd">

<address>
   <name>
      Tanmay Patil
   </name>
   
   <company>
      TutorialsPoint
   </company>
   
   <phone>
      (011) 123-4567
   </phone>
</address>

Voici le contenu du fichier DTD address.dtd -

<!ELEMENT address (name, company, phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>

Entités intégrées

Tous les analyseurs XML doivent prendre en charge les entités intégrées. En général, vous pouvez utiliser ces références d'entité n'importe où. Vous pouvez également utiliser du texte normal dans le document XML, comme dans le contenu des éléments et les valeurs d'attribut.

Il y a cinq entités intégrées qui jouent leur rôle dans un XML bien formé, elles sont -

  • esperluette: & amp;

  • Guillemet simple: & apos;

  • Supérieur à: & gt;

  • Moins de: & lt;

  • Guillemet double: & quot;

Exemple

L'exemple suivant montre la déclaration d'entité intégrée -

<?xml version = "1.0"?>

<note>
   <description>I'm a technical writer & programmer</description>
<note>

Comme vous pouvez le voir ici, le & amp; le caractère est remplacé par & chaque fois que le processeur rencontre cela.

Entités de caractère

Les entités de caractère sont utilisées pour nommer certaines des entités qui sont une représentation symbolique d'informations, c'est-à-dire que les caractères difficiles ou impossibles à saisir peuvent être remplacés par des entités de caractère.

Exemple

L'exemple suivant montre la déclaration d'entité de caractère -

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE author[
   <!ELEMENT author (#PCDATA)>
   <!ENTITY writer "Tanmay patil">
   <!ENTITY copyright "&#169;">
]>
<author>&writer;&copyright;</author>

Vous remarquerez ici que nous avons utilisé &#169;comme valeur du caractère de copyright. Enregistrez ce fichier sous le nom sample.xml et ouvrez-le dans votre navigateur et vous verrez que le copyright est remplacé par le caractère ©.

Entités générales

Les entités générales doivent être déclarées dans la DTD avant de pouvoir être utilisées dans un document XML. Au lieu de ne représenter qu'un seul caractère, les entités générales peuvent représenter des caractères, des paragraphes et même des documents entiers.

Syntaxe

Pour déclarer une entité générale, utilisez une déclaration de cette forme générale dans votre DTD -

<!ENTITY ename "text">

Exemple

L'exemple suivant montre la déclaration d'entité générale -

<?xml version = "1.0"?>

<!DOCTYPE note [
   <!ENTITY source-text "tutorialspoint">
]>

<note>
   &source-text;
</note>

Chaque fois qu'un analyseur XML rencontre une référence à une entité de texte source , il fournit le texte de remplacement à l'application au point de référence.

Entités de paramètre

Le but d'une entité paramètre est de vous permettre de créer des sections réutilisables de texte de remplacement.

Syntaxe

Voici la syntaxe de la déclaration d'entité de paramètre -

<!ENTITY % ename "entity_value">
  • valeur_entité est tout caractère qui n'est pas un '&', '%' ou '"'.

Exemple

L'exemple suivant illustre la déclaration d'entité de paramètre. Supposons que vous ayez des déclarations d'élément comme ci-dessous -

<!ELEMENT residence (name, street, pincode, city, phone)>
<!ELEMENT apartment (name, street, pincode, city, phone)>
<!ELEMENT office (name, street, pincode, city, phone)>
<!ELEMENT shop (name, street, pincode, city, phone)>

Supposons maintenant que vous souhaitiez ajouter un pays d' élément supplémentaire , puis vous devez l'ajouter aux quatre déclarations. Par conséquent, nous pouvons opter pour une référence d'entité de paramètre. En utilisant maintenant la référence d'entité de paramètre, l'exemple ci-dessus sera -

<!ENTITY % area "name, street, pincode, city">
<!ENTITY % contact "phone">

Les entités de paramètre sont déréférencées de la même manière qu'une référence d'entité générale, uniquement avec un signe de pourcentage au lieu d'une esperluette -

<!ELEMENT residence (%area;, %contact;)>
<!ELEMENT apartment (%area;, %contact;)>
<!ELEMENT office (%area;, %contact;)>
<!ELEMENT shop (%area;, %contact;)>

Lorsque l'analyseur lit ces déclarations, il remplace le texte de remplacement de l'entité par la référence d'entité.