Tutoriales de informática - Abrirllave.com

Abrirllave.com

Uso de una entidad dentro de otra en una DTD

EJEMPLO En la DTD del siguiente documento XML, se han declarado dos entidades generales internas analizables (color y frase):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE frase [
   <!ELEMENT frase (#PCDATA)>

   <!ENTITY color "azul">
   <!ENTITY frase "El cielo es &color;.">
]>

<frase>&frase;</frase>
Visualización del archivo frase.xml en Google Chrome - Ejemplo del tutorial de DTD de {Abrirllave.com

Referencia circular o recursiva de entidades

EJEMPLO La DTD del siguiente documento XML no es correcta, ya que, la entidad frase1 ha sido referenciada en el valor de la entidad frase2, y al revés también:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE frase [
   <!ELEMENT frase (#PCDATA)>

   <!ENTITY frase1 "Esta frase incluye a la &frase2;.">
   <!ENTITY frase2 "Esta frase incluye a la &frase1;.">
]>

<frase>&frase1;</frase>

Para que dicha DTD fuese correcta, habría que quitar una de las dos referencias a entidades. Por ejemplo escribiendo:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE frase [
   <!ELEMENT frase (#PCDATA)>

   <!ENTITY frase1 "Esta frase incluye a la &frase2;.">
   <!ENTITY frase2 "segunda frase">
]>

<frase>&frase1;</frase>