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>
- En la DTD de este ejemplo se está indicando que los valores –datos– de las entidades (manzana y naranaja) van a ser cargados desde una URI (Uniform Resource Identifier, Identificador Uniforme de Recurso). En este caso, se hace referencia a los archivos externos "manzana.gif" y "naranja.gif".
- Con NDATA (Notation Data) se ha asociado a las entidades manzana y naranaja con la notación gif.
- La notación gif es una declaración del tipo MIME image/gif.
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>
- HTML 5 y HTML 4.01 son identificadores públicos.