Saltar al contenido principal

Entidades generales

Las entidades generales pueden utilizarse en el ejemplar documento XML y en su DTD.

A su vez, se pueden subdividir en dos tipos:

  • Entidades generales internas.
  • Entidades generales externas.

Internas

Una entidad general interna es aquella que define el valor de la entidad en el propio DTD, en la misma línea donde se declara.

La declaración de una entidad general interna tiene la siguiente sintaxis:

<!ENTITY name "content">

Donde:

  • name es el nombre de la entidad que queremos definir.
  • content es el valor que le queremos asignar a esa entidad. Debe ir entre comillas.

La cadena <!ENTITY indica que se trata de una declaración de una entidad y la cadena > indica que se termina. Las partes anteriores debe separase entre ellas por un espacio en blanco o más.

Para utilizar una entidad en el ejemplar del documento XML, debemos seguir la siguiente sintaxis:

&name;

A continuación, un ejemplo completo de su uso:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE textos [
<!ELEMENT textos (texto)+>
<!ELEMENT texto (#PCDATA)>
<!ENTITY escritor "Miguel de Cervantes">
<!ENTITY obra "El Quijote">
<!ENTITY fecha "29-09-1947">
]>
<textos>
<texto>&obra; fue escrito por &escritor;.</texto>
<texto>&escritor; nació el &fecha;.</texto>
</textos>

Cuando un procesador XML interpreta el documento anterior, muestra lo siguiente:

<textos>
<texto>El Quijote fue escrito por Miguel de Cervantes.</texto>
<texto>Miguel de Cervantes nació el 29-09-1947.</texto>
</textos>
Probar en el navegador

Es decir, substituye todas las entidades por sus valores correspondientes, las cuales son:

EntidadValor
escritorMiguel de Cervantes
obraEl Quijote
fecha29/09/1947

Externas

Una entidad general externa es aquella que define el valor de la entidad de manera externa, es decir, en otro fichero. El fichero debe ser referenciado en la propia línea de la declaración.

Según el tipo de fichero referenciado, se pueden declarar dos tipos de entidades generales externas:

  • Privadas.
  • Públicas.

Privadas

Una entidad general externa privada es aquella donde el fichero referenciado es un fichero que no es público.

La declaración de una entidad general externa privada tiene la siguiente sintaxis:

<!ENTITY name SYSTEM "URI">

Donde:

  • name es el nombre de la entidad que queremos definir.
  • SYSTEM es una palabra clave que indica que se trata de un recurso privado.
  • URI es la ruta del fichero donde se encuentra el valor que le queremos asignar a esa entidad. Debe ir entre comillas. Si solo se indica el nombre del fichero, el documento DTD y el fichero referenciado deben estar en el mismo directorio.

A continuación, un ejemplo completo de su uso:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE texto [
<!ELEMENT texto (#PCDATA)>
<!ENTITY lenguaje SYSTEM "lang.txt">
]>
<texto>Este documento está escrito en &lenguaje;.</texto>

El contenido de lang.txt es el siguiente:

XML

Cuando un procesador XML interpreta el documento anterior, muestra lo siguiente:

<texto>Este documento está escrito en XML.</texto>

Públicas

Una entidad general externa pública es aquella donde el fichero referenciado es un fichero público, es decir, está accesible desde una URI pública.

La declaración de una entidad general externa pública tiene la siguiente sintaxis:

<!ENTITY name PUBLIC "id" "URI">

Donde:

  • name es el nombre de la entidad que queremos definir.
  • PUBLIC es una palabra clave que indica que se trata de un recurso público.
  • id es el identificador público. Los identificadores públicos permiten localizar recursos DTD. Pueden tener cualquier formato, aunque se utiliza comunmente un FPI (Formal Public Identifier).
  • URI es la ruta del fichero donde se encuentra el valor que le queremos asignar a esa entidad. Debe ir entre comillas. En este tipo de entidades, normalmente es una URL.

A continuación, un ejemplo completo de su uso:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE texto [
<!ELEMENT texto (#PCDATA)>
<!ENTITY dtd PUBLIC "-//W3C//TEXT dtd//EN" "https://mp0373-lmsxi.vercel.app/ud04/dtd.txt">
]>
<texto>Este documento utiliza &dtd; para su validación.</texto>

El contenido de dtd.txt es el siguiente:

Document Type Definition

Cuando un procesador XML interpreta el documento anterior, muestra lo siguiente:

<texto>Este documento utiliza Document Type Definition para su validación.</texto>