XML: DTD

La Declaración de tipo de documento XML, comúnmente conocida como DTD, es una forma de describir el lenguaje XML con precisión. Los DTD verifican el vocabulario y la validez de la estructura de los documentos XML con las reglas gramaticales del lenguaje XML apropiado.

Una DTD XML se puede especificar dentro del documento o se puede guardar en un documento separado y luego dar me gusta por separado.

Sintaxis

La sintaxis básica de un DTD es la siguiente:

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

En la sintaxis anterior,

  • los DTD comienza con el delimitador <! DOCTYPE.

  • Un element le dice al analizador que analice el documento desde el elemento raíz especificado.

  • DTD identifieres un identificador para la definición del tipo de documento, que puede ser la ruta a un archivo en el sistema o la URL a un archivo en Internet. Si el DTD apunta a una ruta externa, se llamaExternal Subset.

  • The square brackets [ ]adjunte una lista opcional de declaraciones de entidad denominada Subconjunto interno .

DTD interno

Una DTD se denomina DTD interna si los elementos se declaran dentro de los archivos XML. Para referirse a él como DTD interno, el atributo independiente en la declaración XML debe establecerse enyes. Esto significa que la declaración funciona independientemente de una fuente externa.

Sintaxis

A continuación se muestra la sintaxis de DTD interno:

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

donde elemento-raíz es el nombre del elemento raíz y declaraciones de elementos es donde declara los elementos.

Ejemplo

A continuación se muestra un ejemplo simple 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>

Repasemos el código anterior:

Start Declaration - Comience la declaración XML con la siguiente declaración.

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

DTD- Inmediatamente después del encabezado XML, sigue la declaración del tipo de documento , comúnmente conocida como DOCTYPE -

<!DOCTYPE address [

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

DTD Body - La declaración DOCTYPE va seguida del cuerpo de la DTD, donde declaras elementos, atributos, entidades y notaciones.

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

Aquí se declaran varios elementos que componen el vocabulario del documento <nombre>. <! ELEMENT name (#PCDATA)> define el nombre del elemento como de tipo "#PCDATA". Aquí #PCDATA significa datos de texto analizables.

End Declaration - Finalmente, la sección de declaración del DTD se cierra mediante un paréntesis de cierre y un paréntesis de ángulo de cierre (]>). Esto efectivamente finaliza la definición y, a partir de entonces, el documento XML sigue inmediatamente.

Reglas

  • La declaración del tipo de documento debe aparecer al principio del documento (precedida solo por el encabezado XML); no está permitido en ningún otro lugar dentro del documento.

  • De manera similar a la declaración DOCTYPE, las declaraciones de elementos deben comenzar 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 DTD externo, los elementos se declaran fuera del archivo XML. Se accede a ellos especificando los atributos del sistema, que pueden ser el archivo .dtd legal o una URL válida. Para referirse a él como DTD externo, el atributo independiente en la declaración XML debe establecerse comono. Esto significa que la declaración incluye información de la fuente externa.

Sintaxis

A continuación se muestra la sintaxis para DTD externa:

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

donde nombre-archivo es el archivo con extensión .dtd .

Ejemplo

El siguiente ejemplo muestra el uso de DTD externo:

<?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 DTD address.dtd es como se muestra -

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

Tipos

Puede hacer referencia a una DTD externa utilizando system identifiers o public identifiers.

Identificadores del sistema

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

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

Como puede ver, contiene la palabra clave SYSTEM y una referencia URI que apunta a la ubicación del documento.

Identificadores públicos

Los identificadores públicos proporcionan un mecanismo para localizar recursos DTD y están escritos de la siguiente manera:

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

Como puede ver, comienza con la palabra clave PUBLIC, seguida de un identificador especializado. Los identificadores públicos se utilizan para identificar una entrada en un catálogo. Los identificadores públicos pueden seguir cualquier formato, sin embargo, un formato de uso común se llamaFormal Public Identifiers, or FPIs.