Saltar la navegación

6.2.2. Entidades

Las entidades son elementos XML que permiten indicar abreviaturas de texto (o referencias a elementos externos abreviadas) o utilizar caracteres que de otra forma serían inválidos en el documento. En XML están definidas las siguientes entidades:

Entidad Sustitución
&lt; <
&gt; >
&amp; &
&apos; '
&quot; "
&nbsp; (Espacio)

Estas entidades no hay que declararlas en ningún DTD, todos los analizadores de XML estándar conocen estas entidades. Ejemplo:

<autor>Leopoldo Alas &apos;Clarín&apos;</autor>

El texto PCDATA del autor es Leopoldo Alas 'Clarín' (así se visualizará en el navegador).

Entidades a caracteres especiales

La etiqueta inicial <?xml permite indicar (entre otras cosas) el juego de caracteres que utiliza un documento XML (normalmente Unicode, UTF8).

Si deseamos indicar un carácter especial que no está contenido en nuestro teclado, conociendo su código en el juego de caracteres que utiliza el documento, podemos especificarle con la sintaxis:

&#número;

Donde el número es el código del carácter en decimal. Ejemplo:

<calle>Kantstra&#223;e, Berlín</calle>

En el navegador este elemento aparecería como:

<calle>Kantstraße, Berlín</calle>

Entidades generales

Se usan como abreviaturas que aparecerán en el documento XML. La razón de su uso es facilitar la escritura de nombres repetitivos (nombres de la empresa, direcciones muy utilizadas,...). La sintaxis para declarar una entidad de este tipo es:

<!ENTITY nombre "texto">

Para usar en un documento XML la entidad declarada, se usa:

&nombre;

Ejemplo de declaración de una entidad:

<!ENTITY mayor "Calle Mayor Principal" >

uso en un documento XML:

<dirección>&mayor; 18</dirección>

La dirección indicada es Calle Mayor Principal 18.

Incluso se pueden indicar símbolos que no son PCDATA al definir entidades:

<!ENTITY negCursiva "<strong><em></em></strong>">

El documento XML que utilice dicha entidad incluirá todos los símbolos (y por lo tanto estará especificando etiquetas en el código).

Un uso muy interesante es usar entidades que hacen referencia a archivos externos (mediante su dirección URL), por ejemplo:

<!ENTITY direcciónCompleta SYSTEM "direccion.txt" >

Es la palabra SYSTEM la que indica que la entidad no es un texto sino que es el contenido de un archivo. El uso de la entidad &direcciónCompleta; en un documento XML provocará que en dicho documento se añada el contenido del archivo dirección.txt (en la posición exacta en la que esté colocada la referencia a la entidad).

Entidades de parámetros

Sólo se pueden utilizar dentro del DTD (no en el documento XML).

Su uso más habitual es construir DTD utilizando las entidades definidas a fin de ahorrar trabajo al crear el propio DTD.

Su uso es similar a las entidades generales sólo que utilizan el símbolo % en lugar del símbolo &. Al igual que las generales deben de ser declaradas antes de poder usarse:

<!ENTITY % mayor "Calle Mayor Principal" >

Y su uso (dentro del DTD), por ejemplo:

<!ATTLIST persona dirección CDATA "%mayor;">

En este caso las comillas dobles son obligatorias porque los valores por defecto van entrecomillados (como se ha visto anteriormente).

Las entidades de parámetros pueden utilizar archivos externos, ejemplo de DTD:

<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY % directorio SYSTEM "directorio.dtd" >
%directorio;
<!ELEMENT empresa (razónSocial, dirección) >
<!ELEMENT razónSocial (#PCDATA) >

De esta forma se construye un DTD con el contenido ya especificado en otro DTD. En el ejemplo las empresas constan de elementos razónSocial y de directorio. El elemento directorio no se define, sino que su descripción está especificada en directorio.dtd.

Creado con eXeLearning (Ventana nueva)