Introducción a DTD

La definición de tipo de documento (DTD) puede definir los módulos de construcción de documentos XML válidos. Utiliza una serie de elementos válidos para definir la estructura del documento.

El DTD puede declararse en línea en el documento XML o como una referencia externa.

Declaración DOCTYPE interna

Si el DTD se incluye en su archivo de origen XML, debe estar encapsulado en una declaración DOCTYPE con la siguiente sintaxis:

!DOCTYPE elemento raíz [declaraciones de elementos]

Ejemplo de documento XML con DTD (abra en IE5 o versiones superiores y seleccione Ver código fuente):

<?xml version="1.0"?>
!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  !ELEMENT to      (#PCDATA)
  !ELEMENT from    (#PCDATA)
  <!ELEMENT heading (#PCDATA)>
  !ELEMENT body    (#PCDATA)
]>
<note>
  <to>George</to>
  <from>John</from>
  <heading>Recordatorio</heading>
  <body>¡No olvides la reunión!</body>
</note>

Abra este archivo XML en su navegador y seleccione el comando "Ver código fuente".

Explicación del DTD anterior:

!DOCTYPE note [ (línea segunda) Definición de este documento como note documento de tipo.

!ELEMENT note (línea tercera) Definición note El elemento tiene cuatro elementos: "to, from, heading, body"

!ELEMENT to (línea cuarta) Definición to El elemento es de tipo "#PCDATA"

!ELEMENT from (línea quinta) Definición from El elemento es de tipo "#PCDATA"

!ELEMENT heading (línea sexta) Definición heading El elemento es de tipo "#PCDATA"

!ELEMENT body (línea séptima) Definición body El elemento es de tipo "#PCDATA"

Declaración de documento externo

Si el DTD se encuentra en el archivo de origen XML externo, debe estar encapsulado en una definición DOCTYPE con la siguiente sintaxis:

<!DOCTYPE raíz ELEMENTO SYSTEM "nombre_de_archivo">

Este documento XML es idéntico al documento XML superior, pero tiene un DTD externo: (Abrir en IE5y luego selecciona el comando "Ver código fuente"。(

<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Recordatorio</heading>
<body>¡No olvides la reunión!</body>
</note>

Este es el archivo "note.dtd" que contiene DTD:

<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>

¿Por qué usar DTD?

A través de DTD, cada archivo XML puede llevar una descripción de su formato propio.

A través de DTD, grupos independientes pueden usar de manera consistente un DTD estándar para intercambiar datos.

Y tu aplicación también puede usar un DTD estándar para validar los datos recibidos externamente.

También puedes usar DTD para validar tus propios datos.