DTD - Sintaxis

Una DTD XML se puede especificar dentro del documento o se puede guardar en un documento separado y luego el documento se puede vincular al documento DTD para usarlo.

Sintaxis

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

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

En la sintaxis anterior:

  • 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.

  • los square brackets [ ] adjuntar una lista opcional de declaraciones de entidad llamada internal subset.

DTD interno

Una DTD se denomina DTD interna si los elementos se declaran dentro de los archivos XML. Para hacer referencia 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

La sintaxis del DTD interno es como se muestra:

<!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 angular 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 hacer referencia 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 son como se muestra -

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

Tipos

Puede hacer referencia a un DTD externo utilizando system identifiers o public identifiers.

System Identifiers

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 de URI que apunta a la ubicación del documento.

Public Identifiers

Los identificadores públicos proporcionan un mecanismo para localizar recursos DTD y están escritos como se muestra a continuación:

<!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 llama identificadores públicos formales o FPI.