
¿Qué sucede si queremos declarar valores constantes dentro de los documentos? ¿podemos?
Las entidades nos permiten definir constantes en un documento XML. Cuando se usan dentro del documento XML se limitan por "&" y ";", por ejemplo &entidad;
¿Cómo trabaja el intérprete con ellos? Al procesar el documento XML, el intérprete sustituye la entidad por el valor que se le ha asociado en el DTD.
No admiten recursividad, es decir, una entidad no puede hacer referencia a ella misma.
Para definir una entidad en un DTD se usa el elemento <!ENTITY>
Las entidades pueden ser de cuatro tipos:
- Internas: Existen cinco entidades predefinidas en el lenguaje, son:
- <: Se corresponde con el signo menor que, <.
- >: Hace referencia al signo mayor que, >.
- ": Son las comillas rectas dobles, ''.
- ': Es el apóstrofe o comilla simple, '.
- &: Es el et o ampersand, &.
¿Se puede definir una entidad diferente? ¿Cómo? Utilizando la siguiente sintaxis: <!ENTITY nombre_entidad "valor de la entidad">
Por ejemplo,
<!ENTITY dtd "Definiciones de Tipo de Documento">
- Externas: Permiten establecer una relación entre el documento XML y otro documento a través de la URL de éste último. Un ejemplo de declaración de una entidad externa es:
<!ENTITY nombre_entidad SYSTEM "http://localhost/docsxml/fichero_entidad.xml">
En este caso el contenido de los ficheros es analizado, por lo que deben seguir la sintaxis XML.
Cuando es necesario incluir ficheros con formatos binarios, es decir ficheros que no se analicen, se utiliza la palabra reservada NDATA
en la definición de la entidad y habrá que asociar a dicha entidad una declaración de notación, tal y como muestra el ejemplo del apartado siguiente.
- De parámetro: Permite dar nombres a partes de un DTD y hacer referencia a ellas a lo largo del mismo. Son especialmente útiles cuando varios elementos del DTD comparten listas de atributos o especificaciones de contenidos. Se denotan por
%entidad;
<!ENTITY %direccion "calle, numero?, ciudad, cp">
<!ENTITY alumno (dni, %direccion;)>
<!ENTITY ies (nombre, %direccion;)>
- De parámetro externas: Permite incluir en un DTD elementos externos, lo que se aplica en dividir la definición DTD en varios documentos.
<!ENTITY persona SYSTEM "persona.dtd">