Tutoriales de informática - Abrirllave.com

Abrirllave.com

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"/>

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"/>