DTD - Entidades

Las entidades se utilizan para definir accesos directos a caracteres especiales dentro de los documentos XML. Las entidades pueden ser principalmente de cuatro tipos:

  • Entidades integradas

  • Entidades de carácter

  • Entidades generales

  • Entidades de parámetros

Sintaxis de declaración de entidad

En general, las entidades pueden declararse internally o externally. Entendamos cada uno de estos y su sintaxis de la siguiente manera:

Entidad interna

Si una entidad se declara dentro de una DTD, se la llama entidad interna.

Syntax

A continuación se muestra la sintaxis para la declaración de entidad interna:

<!ENTITY entity_name "entity_value">

En la sintaxis anterior:

  • entity_name es el nombre de la entidad seguido de su valor entre comillas dobles o comillas simples.

  • entity_value contiene el valor del nombre de la entidad.

  • El valor de entidad de la entidad interna se desreferencia agregando prefijo & al nombre de la entidad, es decir, & entity_name.

Example

A continuación se muestra un ejemplo simple de declaración de entidad interna:

<?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>

En el ejemplo anterior, los respectivos nombres de entidad name , company y phone_no se reemplazan por sus valores en el documento XML. Los valores de la entidad se quitan de referencia agregando un prefijo & al nombre de la entidad.

Guarde este archivo como sample.xmly ábralo en cualquier navegador, notará que los valores de entidad para name , company , phone_no se reemplazan respectivamente.

Entidad externa

Si una entidad se declara fuera de una DTD, se la llama entidad externa. Puede hacer referencia a una entidad externa mediante identificadores del sistema o identificadores públicos.

Syntax

A continuación se muestra la sintaxis para la declaración de entidad externa:

<!ENTITY name SYSTEM "URI/URL">

En la sintaxis anterior:

  • name es el nombre de la entidad.

  • SYSTEM es la palabra clave.

  • URI/URL es la dirección de la fuente externa incluida entre comillas simples o dobles.

Types

Puede hacer referencia a un DTD externo utilizando -

  • System Identifiers - Un identificador del sistema le permite especificar la ubicación de un archivo externo que contiene declaraciones DTD.

    Como puede ver, contiene la palabra clave SYSTEM y una referencia de URI que apunta a la ubicación del documento. La sintaxis es la siguiente:

<!DOCTYPE name SYSTEM "address.dtd" [...]>
  • Public Identifiers - Los identificadores públicos proporcionan un mecanismo para localizar recursos DTD y se escriben como se muestra a continuación:

    Como puede ver, comienza con la palabra clave PUBLIC, seguida de un identificador especializado. Los identificadores públicos se utilizan para identificar una entrada en un catálogo. Los identificadores públicos pueden seguir cualquier formato; sin embargo, un formato de uso común se denomina identificadores públicos formales o FPI.

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

Example

Entendamos la entidad externa con el siguiente ejemplo:

<?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>

A continuación se muestra el contenido del archivo DTD address.dtd -

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

Entidades integradas

Todos los analizadores XML deben admitir entidades integradas. En general, puede utilizar estas referencias de entidad en cualquier lugar. También puede utilizar texto normal dentro del documento XML, como en el contenido de los elementos y los valores de los atributos.

Hay cinco entidades integradas que desempeñan su papel en XML bien formado, son:

  • ampersand: & amp;

  • Comillas simples: & apos;

  • Mayor que: & gt;

  • Menos de: & lt;

  • Comillas dobles: & quot;

Ejemplo

El siguiente ejemplo demuestra la declaración de entidad incorporada:

<?xml version = "1.0"?>

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

Como puede ver aquí, el & amp; El carácter se reemplaza por & siempre que el procesador encuentra esto.

Entidades de carácter

Las entidades de carácter se utilizan para nombrar algunas de las entidades que son una representación simbólica de información, es decir, los caracteres que son difíciles o imposibles de escribir pueden sustituirse por entidades de carácter.

Ejemplo

El siguiente ejemplo demuestra la declaración de entidad de carácter:

<?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>

Notarás que aquí hemos usado &#169;como valor para el carácter de copyright. Guarde este archivo como sample.xml y ábralo en su navegador y verá que los derechos de autor son reemplazados por el carácter ©.

Entidades generales

Las entidades generales deben declararse dentro de la DTD antes de que puedan usarse dentro de un documento XML. En lugar de representar solo un carácter, las entidades generales pueden representar caracteres, párrafos e incluso documentos completos.

Sintaxis

Para declarar una entidad general, use una declaración de esta forma general en su DTD:

<!ENTITY ename "text">

Ejemplo

El siguiente ejemplo demuestra la declaración de entidad general:

<?xml version = "1.0"?>

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

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

Siempre que un analizador XML encuentre una referencia a la entidad de texto fuente , proporcionará el texto de reemplazo a la aplicación en el punto de la referencia.

Entidades de parámetros

El propósito de una entidad de parámetro es permitirle crear secciones reutilizables de texto de reemplazo.

Sintaxis

A continuación se muestra la sintaxis para la declaración de entidad de parámetro:

<!ENTITY % ename "entity_value">
  • entity_value es cualquier carácter que no sea '&', '%' o '"'.

Ejemplo

El siguiente ejemplo demuestra la declaración de entidad de parámetro. Suponga que tiene declaraciones de elementos como se muestra a continuación:

<!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)>

Ahora suponga que desea agregar un país de elemento adicional , luego debe agregarlo a las cuatro declaraciones. Por lo tanto, podemos buscar una referencia de entidad de parámetro. Ahora, usando la referencia de entidad de parámetro, el ejemplo anterior será:

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

Las entidades de parámetros se desreferencian de la misma manera que una referencia de entidad general, solo con un signo de porcentaje en lugar de un ampersand:

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

Cuando el analizador lee estas declaraciones, sustituye el texto de reemplazo de la entidad por la referencia de la entidad.