En el contexto de un Document Type Definition (DTD) en XML, una NOTATION se utiliza para describir el tipo de un dato no XML, proporcionando una forma de identificar el formato de datos externos. Las notaciones se pueden usar para especificar el tipo de medios de datos externos, como imágenes, documentos de texto, multimedia, etc., permitiendo que las aplicaciones que procesan el documento XML sepan cómo manejar esos datos.
Las notaciones se utilizan principalmente en combinación con entidades no analizadas (Unparsed Entities) o atributos de tipo NOTATION en la definición de elementos. Esto permite al documento XML referenciar datos externos de una manera que se pueda identificar su tipo. Por ejemplo:
<!ENTITY grafico SYSTEM "imagen.jpg" NDATA jpeg>
<!NOTATION jpeg SYSTEM "image/jpeg">
En este ejemplo, se declara una entidad no analizada grafico que hace referencia a un archivo externo "imagen.jpg". La notación jpeg se utiliza para indicar el tipo de medio (en este caso, "image/jpeg") del archivo externo. Esto no solo proporciona información sobre cómo manejar el archivo externo sino que también permite la validación del tipo de datos referenciados en el documento XML.
Aunque el uso de NOTATION y entidades no analizadas no es tan común en la práctica moderna de XML, especialmente con el advenimiento de tecnologías como namespaces en XML y esquemas XML que ofrecen mecanismos más ricos y flexibles para la definición de tipos, las notaciones ofrecen una manera estándar y formal de declarar tipos de datos externos en documentos XML. Esto puede ser especialmente útil en sistemas que necesitan procesar una variedad de tipos de datos externos de manera estándar, asegurando la interoperabilidad entre diferentes aplicaciones y sistemas.
La declaración de una NOTATION en un DTD se ve así:
<!NOTATION nombre PUBLIC "IdentificadorPublico" "URI">
o
<!NOTATION nombre SYSTEM "URI">
nombre: Es el nombre que se asigna a la notación, el cual se usa para referenciarla en el DTD o en el documento XML.
PUBLIC "IdentificadorPublico" "URI": Una notación declarada como PUBLIC debe tener un identificador público único y opcionalmente puede especificar una URI (Uniform Resource Identifier) que indica dónde se puede encontrar la descripción o la implementación del tipo de dato.
SYSTEM "URI": Una notación declarada como SYSTEM debe especificar una URI que apunta a la ubicación del recurso o la especificación del formato de dato.
Primero, definimos un DTD que incluye una declaración NOTATION para el tipo de medio JPG y una entidad no analizada que referencia un archivo de imagen externo.
fichero dtd
<!ELEMENT documento (titulo, imagen)>
<!ELEMENT titulo (#PCDATA)>
<!ELEMENT imagen EMPTY>
<!ATTLIST imagen
archivo ENTITY #REQUIRED>
<!ENTITY imagen_jpg SYSTEM "imagen.jpg" NDATA jpg>
<!NOTATION jpg SYSTEM "image/jpeg">
En este DTD:
Definimos un elemento documento que contiene un titulo y un elemento imagen.
El elemento imagen tiene un atributo archivo que es de tipo ENTITY. Este atributo se usará para asociar la entidad no analizada con el elemento.
Declaramos una entidad no analizada imagen_jpg que referencia un archivo externo "imagen.jpg". Usamos NDATA jpg para especificar que el tipo de dato de esta entidad es el que se define en la notación jpg.
Declaramos una NOTATION llamada jpg para identificar el tipo de medio "image/jpeg".
Ahora, creamos un documento XML que utiliza el DTD definido anteriormente para incluir una referencia a la imagen externa.
fichero xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE documento SYSTEM "archivo.dtd">
<documento>
<titulo>Ejemplo de Notation</titulo>
<imagen archivo="imagen_jpg"/>
</documento>
En este documento XML:
Declaramos que el documento es de tipo documento y referenciamos el DTD externo "archivo.dtd".
El elemento documento contiene un titulo y un elemento imagen.
El elemento imagen utiliza el atributo archivo para referenciar la entidad no analizada imagen_jpg definida en el DTD. Esto indica que el elemento imagen está asociado con el archivo de imagen externo "imagen.jpg".
Este ejemplo demuestra cómo puedes usar NOTATION y entidades no analizadas en un DTD para gestionar referencias a datos externos, como imágenes, de una manera que es comprensible y manejable por procesadores XML. Aunque este archivo "imagen.jpg" no se incrusta ni se carga directamente en el documento XML, la referencia proporcionada permite a las aplicaciones que procesan el documento entender cómo tratar el recurso externo referenciado.