Entidades generales externas no analizables en DTD
En una DTD, al igual que ocurre con las entidades generales externas analizables, se pueden declarar dos tipos de entidades generales externas no analizables (unparsed): privadas y públicas. Para las privadas se utiliza SYSTEM, y para las públicas PUBLIC. La sintaxis en cada caso es:
<!ENTITY nombre-de-la-entidad SYSTEM "URI" NDATA notación>
<!ENTITY nombre-de-la-entidad PUBLIC "identificador-público" "URI" NDATA notación>
Las entidades no analizables pueden contener cualquier tipo de datos (no XML). Por tanto, pueden hacer referencia a datos que un procesador XML no tiene porqué analizar, como por ejemplo una imagen.
Entidades generales externas no analizables privadas - SYSTEM
EJEMPLO En la DTD del siguiente documento XML, se indica que el elemento "imagen" que se escriba, tiene que incluir obligatoriamente el atributo fuente, cuyo valor será una entidad:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE imagen [
<!ELEMENT imagen EMPTY>
<!ATTLIST imagen fuente ENTITY #REQUIRED>
<!ENTITY logo SYSTEM "logo.gif" NDATA gif>
<!NOTATION gif SYSTEM "image/gif">
]>
<imagen fuente="logo"/>
- En la DTD de este ejemplo se está indicando que el valor –datos– de la entidad logo va a ser cargado desde una URI. En este caso, se hace referencia al archivo "logo.gif".
- Con NDATA (Notation Data) se indica que la entidad no es analizable y, en este caso, se ha asociado a la entidad logo con la notación gif.
- La notación gif es una declaración del tipo MIME image/gif.
Entidades generales externas no analizables públicas - PUBLIC
EJEMPLO Para declarar logo como entidad pública, se puede escribir:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE imagen [
<!ELEMENT imagen EMPTY>
<!ATTLIST imagen fuente ENTITY #REQUIRED>
<!ENTITY logo PUBLIC "-//W3C//GIF logo//EN" "http://www.abrirllave.com/dtd/logo.gif" NDATA gif>
<!NOTATION gif SYSTEM "image/gif">
]>
<imagen fuente="logo"/>
- Véase que, se referencia al archivo http://www.abrirllave.com/dtd/logo.gif.