Entidades
Las entidades son un mecanismo para insertar un contenido predefinido en un documento XML. Una entidad es como una especie de constante que puede almacenar cualquier tipo de contenido.
El valor de un entidad lo podemos obtener:
- Del propio DTD, porque se ha definido en él.
- De un fichero externo.
Cuando se define una entidad, se define un nombre que la identifique y se le asocia un valor. En un documento XML, se puede hacer referencia a una entidad las veces que se necesite. Cuando el procesador XML interprete el documento, cada vez en encuentre una entidad, la substituye por su valor correspondiente.
La ventaja de utilizar constantes es que, si queremos modificar su valor, basta con modificarlo en un único lugar y el cambio se mostrará en todas sus apariciones. Es decir, permite reutilizar contenido común en varios lugares del documento. Además, también permite centralizar la administración de ese contenido en un solo lugar. Esto ayuda a mantener el documento más legible, fácil de mantener y también a reducir errores humanos.
Entidades de XML
XML define algunas entidades. Algunas son:
Caracter | Entidad |
---|---|
> | gt |
< | lt |
& | amp |
" | quot |
' | apos |
Por ejemplo, cuando se quiere representar "
en un documento se utiliza "
, es decir, el nombre de la entidad encerrada entre los caracteres &
y ;
:
<texto>Usando "comillas"</texto>
Cuando el código anterior se interpreta, se muestra lo siguiente:
<texto>Usando "comillas"</texto>
Declaración y uso de una entidad
Cuando queremos utilizar una entidad propia, debemos declararla. La declaración de entidades tiene la siguiente sintaxis:
<!ENTITY name "content">
Donde:
name
es el nombre de la entidad que queremos definir. Los nombres de las entidades siguen las mismas reglas que los nombres de elementos y atributos.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.
Por ejemplo, una declaración de atributo sería la siguiente:
<!ENTITY lmsgi "Lenguajes de marcas y sistemas de gestión de información">
Es decir, se asocia el valor Lenguajes de marcas y sistemas de gestión de información
a la entidad lmsgi
.
Para utilizar una entidad, debemos seguir la siguiente sintaxis:
&name;
Es decir, indicar el nombre de la entidad entre &
y ;
sin espacios.
Consideremos el doucmento XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE modulo [
<!ELEMENT modulo (id, nombre)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT nombre (#PCDATA)>
<!ENTITY lmsgi "Lenguajes de marcas y sistemas de gestión de información">
]>
<modulo>
<id>mp0373</id>
<nombre>&lmsgi;</nombre>
</modulo>
Cuando el documento XML sea interpretado por un procesador XML, mostrará lo siguiente:
<modulo>
<id>mp0373</id>
<nombre>Lenguajes de marcas y sistemas de gestión de información</nombre>
</modulo>
Como se puede apreciar, la entidad ha sido substituida por su valor.
En los siguientes apartados, se describen los diferentes tipos de entidades y sus usos.