Lenguaje XML/Definición de tipo de documento/Texto completo
Introducción
Una definición de tipo de documento, o DTD (siglas en inglés de Document Type Definition) sirve para declarar la estructura de un documento SGML o XML, elemento por elemento. Esta información se usa para validar un documento XML o SGML. Un documento XML es válido cuando no incumple ninguna de las normas establecidas en su DTD.
Las DTDs nos ayudan a usar una misma estructura para muchos documentos. Esta se puede incluir en un fichero aparte, de modo que en nuestros documentos solo debemos añadir una línea para hacer referencia a la DTD.
Aparte de las DTDs, existen otros métodos que también permiten validar documentos XML, como por ejemplo XML Schema o RELAX NG, aunque son menos utilizadas y conocidas.
La W3C provee la especificación de XML y DTD en la página http://www.w3.org/TR/xml/, y es el sitio donde recomendamos se consulten dudas, ya que ésta es la referencia oficial del lenguaje XML (y DTD).
Declaración de tipo de documento
Las DTDs pueden ser incluidas en un documento XML directamente, o a través de una referencia. Ahora bien, en ambos casos hay que escribir una declaración DOCTYPE (Document Type Declaration, en español Declaración de Tipo de Documento) para asociar una DTD al documento XML. Un archivo DTD puede ser asociado a miles de documentos XML, y de la misma forma, un solo documento XML puede tener asociados varias DTDs.
DTDs internas
Las DTDs asociadas dentro del mismo documento XML solo funcionan dentro de ese documento XML. Es como si incluyeramos código CSS dentro de un documento HTML mediante la etiqueta <style>. Tienen la siguiente sintaxis:
<!DOCTYPE elemento-raíz [
declaraciones
]>
donde elemento-raíz
es el nombre que identifica al tipo de documento, y que también es el nombre que llevará la etiqueta raíz de nuestro XML. Y declaraciones
son las declaraciones a incluir. Por ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE marcadores [
<!ELEMENT marcadores (pagina)*>
<!ELEMENT pagina (nombre, descripcion, url)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT descripcion (#PCDATA)>
<!ELEMENT url (#PCDATA)>
]>
<marcadores>
<pagina>
<nombre>Wikilibros</nombre>
<descripcion>Libros libres para un mundo libre.</descripcion>
<url>http://www.wikilibros.org/</url>
</pagina>
<pagina>
<nombre>Wikipedia</nombre>
<descripcion>La enciclopedia libre.</descripcion>
<url>http://www.wikipedia.org/</url>
</pagina>
<pagina>
<nombre>Wikicionario</nombre>
<descripcion>El diccionario libre.</descripcion>
<url>http://www.wiktionary.org/</url>
</pagina>
</marcadores>
- REDIRECCIÓN[[]]== DTDs externas ==
Las DTDs asociadas mediante una referencia en el documento XML pueden ser enlazadas a tantos documentos como se quiera. Es como si incluyeramos código CSS dentro de un documento HTML mediante la etiqueta <link>. Tienen la siguiente sintaxis:
<!DOCTYPE elemento-raiz SYSTEM "ubicación-dtd">
donde elemento-raíz
es el nombre que identifica al tipo de documento, y que también es el nombre que llevará la etiqueta raíz de nuestro XML. Y ubicación-dtd
es la ruta absoluta al documento XML. Por ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE marcadores SYSTEM "http://example.com/dtd/marcadores.dtd">
<marcadores>
<pagina>
<nombre>Wikilibros</nombre>
<descripcion>Libros libres para un mundo libre.</descripcion>
<url>http://www.wikilibros.org/</url>
</pagina>
<pagina>
<nombre>Wikipedia</nombre>
<descripcion>La enciclopedia libre.</descripcion>
<url>http://www.wikipedia.org/</url>
</pagina>
<pagina>
<nombre>Wikicionario</nombre>
<descripcion>El diccionario libre.</descripcion>
<url>http://www.wiktionary.org/</url>
</pagina>
</marcadores>
y marcadores.dtd
tendría la siguiente estructura:
<!ELEMENT marcadores (pagina)*>
<!ELEMENT pagina (nombre, descripcion, url)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT descripcion (#PCDATA)>
<!ELEMENT url (#PCDATA)>
Elementos
Atributos
Entidades
Notaciones
Secciones condicionales
Lenguaje XML/Definición de tipo de documento/Secciones condicionales