DTD - Sintaxis



Un DTD XML puede estar especificado dentro del documento, o se puede guardar en un documento independiente. Para este último caso el documento se puede relacionar con el documento DTD para usarlo.

Sintaxis

A continuación le mostramos la sintaxis básica de un DTD:

<!DOCTYPE element DTD identifier
[
   declaration1
   declaration2
   ........
]>

En la sintaxis que ha visto

  • DTD empieza con el delimitador <!DOCTYPE.

  • Un elemento ordena al analizador diseccionar el documento desde el elemento raíz especificado.

  • Identificador DTD es un identificador para la definición del tipo de documento, el cual puede convertirse en el camino hacia un archivo en el sistema o una dirección URL hacia un archivo en Internet. Si el DTD indica un camino externo, se llama subconjunto externo (en inglés external subset).

  • Los corchetes de apertura [ ] encierran una lista opcional de declaraciones de entidad llamada subconjunto interno.

DTD Interno

Un DTD se denomina DTD interno cuando los elementos se han declarado dentro del archivo XML. Para referenciarlo como DTD interno, el atributo standalone en la declaración XML se debe marcar con un Si. Esto significa que la declaración funciona al margen de la fuente externa.

Sintaxis

Le mostramos cómo seria la sintaxis de un DTD interno:

<!DOCTYPE root-element [element-declarations]>

donde root-element es el nombre del elemento raíz y element-declarations es donde se declaran los elementos.

Ejemplo

A continuación le mostramos un simple ejemplo de DTD interno:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE address [
   <!ELEMENT address (name,company,phone)>
   <!ELEMENT name (#PCDATA)>
   <!ELEMENT company (#PCDATA)>
   <!ELEMENT phone (#PCDATA)>
]>
<address>
   <name>Tanmay Patil</name>
   <company>TutorialsPoint</company>
   <phone>(011) 123-4567</phone>
</address>

Veamos el código anterior más detenidamente:

Inicio de la declaración- Empiece la declaración XML con lo siguiente

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

DTD- Justo después del encabezado XML encontramos document type declaration, en general referido como DOCTYPE:

<!DOCTYPE address [

La declaración de DOCTYPE tiene un signo de exclamación (!) al inicio del nombre del elemento. El DOCTYPE informa al analizador que un DTD está asociado con este documento XML.

Cuerpo del DTD- Después de la declaración DOCTYPE viene el cuerpo del DTD, donde usted declara elementos, atributos, entidades, y anotaciones:

<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone_no (#PCDATA)>

Aquí se declaran muchos elementos que forman el vocabulario del documento <name>. <!ELEMENT name (#PCDATA)> define el name del elemento para que se escriba "#PCDATA". En el ejemplo #PCDATA significa datos de texto interpretables por la máquina.

Fin de la declaración - Finalmente, la sección de la declaración de DTD se cierra usando un corchete de cierre y un clorchete angular de cierre (]>). Con esto se termina la definición de forma eficiente, y a partir de ahí, le sigue el documento XML.

Normas

  • La declaración del tipo de documento debe aparecer al inicio del documento (solamente precedido por un encabezado XML) - No está permitido en ningún otro lugar del documento.

  • De forma similar a la declaración de DOCTYPE, las declaraciones de elemento deben empezar con un signo de exclamación.

  • El nombre en la declaración del tipo de documento debe coincidir con el tipo de elemento del elemento raíz.

DTD externo

En los DTD externos, los elementos se declaran fuera del archivo XML. Se puede acceder a ellos especificando los atributos del sistema que pueden ser o un archivo legal .dtd o una dirección URL válida. Para referenciarlo como DTD externo, el atributo standalone en la declaración XML se debe marcar con un no. Esto significa, que la declaración incluye información de una fuente externa.

Sintaxis

Aquí tiene la sintaxis para DTD externos:

<!DOCTYPE root-element SYSTEM "file-name">

donde file-name es el archivo con la extensión .dtd.

Ejemplo

El siguiente ejemplo muestra el uso de DTDs externas:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE address SYSTEM "address.dtd">
<address>
  <name>Tanmay Patil</name>
  <company>TutorialsPoint</company>
  <phone>(011) 123-4567</phone>
</address>

El contenido del archivo de DTD address.dtd es tal y como se muestra a continuación:

<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>

Tipos

Usted puede referirse a un DTD extern usando o identificadores de sistema o identificadores públicos.

Identificadores de sistema

Un identificador de sistema le permite especificar la localización de un archivo externo que contiene declaraciones DTD. La sintaxis es la siguiente:

<!DOCTYPE name SYSTEM "address.dtd" [...]>

Como puede observar contiene la palabra clave 'SYSTEM' y una referencia URI señalando la localización del documento.

Identificadores públicos

Los identificadores públicos aportan un mecanismo de localización de recursos DTD, y han sido escritos como se muestra a continuación:

<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">

Como ve, empieza con la palabra clave PUBLIC, seguida por un identificador especializado. Los identificadores públicos se usan para identificar una entrada en un catálogo. Los identificadores públicos pueden seguir cualquier tipo de formato, sin embargo, un formato comúmente utilizado se llama Identificador público formal o FPI.

Advertisements