Tutoriales de informática - Abrirllave.com

Abrirllave.com

Declaración de notaciones en una DTD

En una DTD se pueden declarar dos tipos de notaciones: privadas y públicas. Para las privadas se utiliza SYSTEM, y para las públicas PUBLIC, pudiéndose utilizar las siguientes sintaxis:

<!NOTATION nombre-de-la-notación SYSTEM "identificador-del-sistema">
<!NOTATION nombre-de-la-notación PUBLIC "identificador-público">
<!NOTATION nombre-de-la-notación PUBLIC "identificador-público" "identificador-del-sistema">

Notaciones para indicar el formato de entidades externas - Uso de SYSTEM

En la DTD de un documento XML, las notaciones se pueden utilizar para especificar el formato de entidades externas (datos no XML), como por ejemplo un archivo que contenga una imagen. Dichas entidades externas no las analizará un procesador XML, sino que serán tratadas por el programa que procese el documento.

EJEMPLO En la DTD del siguiente documento XML, se indica que los elementos "fruta" que se escriban, tienen que incluir obligatoriamente el atributo foto, cuyo valor será una entidad y, para indicar el formato de dicha entidad, se usa la notación gif:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE frutas [
   <!ELEMENT frutas (fruta)*>
   <!ELEMENT fruta EMPTY>
   <!ATTLIST fruta foto ENTITY #REQUIRED>

   <!ENTITY manzana SYSTEM "manzana.gif" NDATA gif>
   <!ENTITY naranja SYSTEM "naranja.gif" NDATA gif>

   <!NOTATION gif SYSTEM "image/gif">
]>

<frutas>
   <fruta foto="manzana"/>
   <fruta foto="naranja"/>
</frutas>

EJEMPLO Si en el sistema existe, por ejemplo, un programa llamado "procesadorGIF.exe" en la carpeta "aplicaciones" capaz de procesar imágenes GIF (Graphics Interchange Format, Formato de Intercambio de Gráficos), también se podría escribir:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE frutas [
   <!ELEMENT frutas (fruta)*>
   <!ELEMENT fruta EMPTY>
   <!ATTLIST fruta foto ENTITY #REQUIRED>

   <!ENTITY manzana SYSTEM "manzana.gif" NDATA gif>
   <!ENTITY naranja SYSTEM "naranja.gif" NDATA gif>

   <!NOTATION gif SYSTEM "aplicaciones/procesadorGIF.exe">
]>

<frutas>
   <fruta foto="manzana"/>
   <fruta foto="naranja"/>
</frutas>

Notación pública - PUBLIC

EJEMPLO En la declaración de una notación se puede indicar un identificador público estándar, como por ejemplo, GIF 1.0:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE frutas [
   <!ELEMENT frutas (fruta)*>
   <!ELEMENT fruta EMPTY>
   <!ATTLIST fruta foto ENTITY #REQUIRED>

   <!ENTITY manzana SYSTEM "manzana.gif" NDATA gif>
   <!ENTITY naranja SYSTEM "naranja.gif" NDATA gif>

   <!NOTATION gif PUBLIC "GIF 1.0">
]>

<frutas>
   <fruta foto="manzana"/>
   <fruta foto="naranja"/>
</frutas>

EJEMPLO En la notación escrita en la DTD del siguiente documento XML, se ha declarado el tipo MIME imagen/gif e indicado el identificador público estándar GIF 1.0:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE frutas [
   <!ELEMENT frutas (fruta)*>
   <!ELEMENT fruta EMPTY>
   <!ATTLIST fruta foto ENTITY #REQUIRED>

   <!ENTITY manzana SYSTEM "manzana.gif" NDATA gif>
   <!ENTITY naranja SYSTEM "naranja.gif" NDATA gif>

   <!NOTATION gif PUBLIC "GIF 1.0" "image/gif">
]>

<frutas>
   <fruta foto="manzana"/>
   <fruta foto="naranja"/>
</frutas>

Atributos cuyo valor es el nombre de una notación

En una DTD, pueden existir elementos con atributos cuyo valor sea el nombre de una notación.

EJEMPLO En la DTD del siguiente documento XML, se indica que los elementos "documento" que se escriban, tienen que incluir obligatoriamente el atributo version, cuyo valor será una notación (h4 o h5):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE documentos [
   <!ELEMENT documentos (documento)*>
   <!ELEMENT documento (#PCDATA)>
   <!ATTLIST documento version NOTATION (h4|h5) #REQUIRED>

   <!NOTATION h5 PUBLIC "HTML 5">
   <!NOTATION h4 PUBLIC "HTML 4.01">
]>

<documentos>
   <documento version="h4"><!-- Código del documento 1. --></documento>
   <documento version="h5"><!-- Código del documento 2. --></documento>
   <documento version="h5"><!-- Código del documento 3. --></documento>
   <documento version="h4"><!-- Código del documento 4. --></documento>
</documentos>