Lenguaje XML/Definición de tipo de documento/Texto completo

De Wikilibros, la colección de libros de texto de contenido libre.
Ir a la navegación Ir a la búsqueda
Esta es la versión para imprimir de Lenguaje XML.
  • Si imprimes esta página, o eliges la opción de Vista preliminar de impresión de tu navegador, verás que desaparecen este cuadro y los elementos de navegación de arriba y de la izquierda, pues no son útiles en una versión impresa.
  • Pulsando antes en Refrescar esta página te asegurarás de obtener los últimos cambios del libro antes de imprimirlo.
  • Para más información, puedes ver Wikilibros:Versión para imprimir.
Logotipo


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>

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

Lenguaje XML/Definición de tipo de documento/Elementos

Atributos

Lenguaje XML/Definición de tipo de documento/Atributos

Entidades

Lenguaje XML/Definición de tipo de documento/Entidades

Notaciones

Lenguaje XML/Definición de tipo de documento/Notaciones

Secciones condicionales

Lenguaje XML/Definición de tipo de documento/Secciones condicionales