Vous êtes sur la page 1sur 7

Qu es una DTD?

1. Qu es una DTD?
2. El sentido de la DTD: el modo estndar y el modo quirks de los navegadores
3. Qu es un espacio de nombres?
4. El sentido de los espacios de nombres: XHTML como anfitrin

Qu es una DTD?

Una DTD es un documento SGML que incluye las reglas sintcticas para un tipo de
documento especfico. Incluye los elementos que se permiten y sus atributos, as como
reglas que afectan a la anidacin de los primeros y a los valores de los segundos.
Contrastando un documento con su DTD se puede comprobar si ste es vlido o no.

La creacin de una DTD est fuera del mbito de este curso, pero si alguien quiere ver
cmo es una, ste es el aspecto que presenta, por ejemplo, la DTD de XHTML 1.0
Estricto (ingls).

En lo que se refiere al desarrollo web, lo que ms nos interesa es cmo indicar el tipo
de documento que es un documento web, lo que se hace por medio de una lnea como
sta:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"


"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

Esta declaracin debe aparecer al principio del documento, sin caracter alguno
anterior1, lo que incluye lneas de un lenguaje del lado del servidor, como PHP o ASP,
aunque se trate de instrucciones que no escriban contenido alguno en el documento
servido al cliente.

Analizada por partes, la declaracin consiste en:

!DOCTYPE: Un literal que indica al navegador que sta es una declaracin del
tipo del documento.
html: Indica el elemento raz del documento.
PUBLIC: Indica si la DTD est disponible de manera pblica. Si no es as, se
sustituye por SYSTEM.
"-//W3C//DTD XHTML 1.1//EN": ste es el Identificador Pblico Formal
Formal Public Identifier. Da informacin sobre la propia DTD y la organizacin
que la ha creado. Consta a su vez de varias partes separadas por dobles barras
inclinadas:
o -: Este caracter indica que la organizacin no est registrada por ISO,
como de hecho ocurre con el W3C. Si la organizacin s est registrada,
se sustituye por +.
o W3C: Indica la organizacin responsable de la DTD.
o DTD XHTML 1.1: Indica el tipo de documento que se est declarando.
Primero viene la Clase Pblica de Texto Public Text Class, DTD, y

1
Qu es una DTD?
despus la Descripcin Pblica de Texto Public Text Description,
XHTML 1.1. En ese afn humano por nombrar cosas, la descripcin
consta a su vez de otras dos partes, la etiqueta label que es XHTML,
y lo que en sentido estricto se denomina definicin del tipo de
documento, 1.1.
o EN: Es el cdigo internacional del idioma en que est escrita la DTD.
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd": Indica el URL de la DTD.

El W3C ha definido una amplia gama de DTD (ingls), pero las que ms nos interesan
de cara a crear documentos XHTML son las tres variantes del 1.0:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

la de 1.1:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"


"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

y tal vez la Basic, que en teora est pensada para definir documentos diseados para
dispositivos mviles:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"


"http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">

En este curso me centrar en XHTML 1.1, puesto que es la primera versin pensada
totalmente como una aplicacin XML que como lenguaje de marcado ofrece una
mayor interoperabilidad, es ms estricto lo que a largo plazo es una ventaja,
creedme, existen ya muchas pginas que son tutoriales de la versin 1.0, porque
creo que prepara mejor para comprender lo que es el XHTML Modular (ingls) y
tambin lo que ser XHTML 2.0 (ingls), y porque, diga lo que diga Paul Haine en HTML
Mastery, mola mucho ms.

Hay otras DTD que definen un documento HTML y que no han sido desarrolladas por el
W3C, como por ejemplo la de ISO, con la que se pueden crear pginas web vlidas.

2
Qu es una DTD?
El sentido de la DTD: el modo estndar y el modo quirks de los navegadores

En teora, al enfrentarse a un documento web un navegador podra acceder a la


informacin contenida en la DTD, comprobar si ese documento es vlido o no, y
decidir entonces como tratarlo. En realidad, no ocurre as: por muy invlido que sea un
documento, y por mucho que no se declare el tipo de documento del que se trata, un
navegador interpretar los elementos del mismo de la mejor manera posible. Qu
sentido tiene, entonces, especificar la DTD?

El motivo es que los navegadores modernos tienen dos modos de interpretacin:

El modo estndar, en el que interpretan un documento web tan ajustadamente


a un estndar pblico como sea posible, en la medida en que soportan tal
estndar.
El modo quirks o modo de peculiaridades, en el que interpretan el documento
de acuerdo con la manera generalmente errnea en que lo hacan sus
versiones anteriores.

Esta situacin viene de finales de los noventa, cuando los desarrolladores de los
navegadores se plantearon seguir los estndares del W3C y dejar atrs el desolador
panorama provocado por la guerra entre Explorer y Netscape. El problema que se
planteaban era el siguiente: si ahora nuestros navegadores interpretan correctamente
los cdigos, qu ocurre con aquellas pginas creadas segn la interpretacin
anterior? Pues que, obviamente, la reinterpretacin de ese mismo cdigo, que
funcionaba en las versiones anteriores, aparecera plagada de errores, porque el
cdigo sera erroneo frente al estndar.

La solucin ms prctica la plante en 1998 Todd Fahrner, quien propuso que los
navegadores tomaran la declaracin del documento como un interruptor. Si el
desarrollador de la pgina era un profesional preocupado por los estndares y la
validez del cdigo, desarrollara su cdigo siguiendo la DTD, por lo que una
interpretacin correcta del estndar le dara el resultado deseado. Si el desarrollador
era de los otros, no habra incluido la DTD, y con el navegador interpretando el
documento como hasta entonces tambin lograra el resultado esperado. As, en
marzo de 2000, Tantek elic implement por vez primera lo que se conocera como
doctype switching, en la versin 5 de Internet Explorer para Mac.

As pues, los navegadores tratan el <!DOCTYPE> como una mera cadena literal con la
que elegir el modo en que interpretar el documento. ste es el motivo por el que se ha
planteado que en HTML5 el <!DOCTYPE> sea algo tan sencillo como esto:

<!DOCTYPE html>

Por supuesto, no todo es tan simple. Si alguien est empleando una DTD antigua como
la de HTML 4.01 Transicional, lo est haciendo desde cero, o acaso est intentando

3
Qu es una DTD?
actualizar, en la medida de lo posible, documentos antiguos? En ese caso, cmo se
debera interpretar su documento? Por cuestiones como sta, no siempre la presencia
de una declaracin activa el modo estndar, y la eleccin depende del criterio del
desarrollador del navegador. Llegados a este punto, slo se puede investigar:

Internet Explorer: En un documento del MSDN se explica cmo se elige el modo


(ingls).
Mozilla/Firefox: Lo llama DOCTYPE sniffing, pero es lo mismo (ingls).
Opera: Desde su versin 7 aplica estos criterios (ingls).
Safari: No tiene un documento oficial, pero parece seguir la interpretacin de
Mozilla.

Y para terminar de sazonar la situacin, Mozilla tiene un modo Casi Estndar


(ingls), aunque apenas es relevante si se han desterrado la tablas de maquetacin.

Afortunadamente, y antes de que el desmino haga mella en el desarrollador, Henri


Sivonen mantiene una tabla completsima de los efectos que la declaracin del tipo de
documento provocan en los navegadores (ingls).

Qu es un espacio de nombres?

En los documentos XHTML el elemento html presenta o debera presentar un


aspecto como ste:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es">

El atributo xmlns es obligatorio, y su valor es el URL indicado. Qu es esto? Es el


espacio de nombres.

En el elemento html se debera especificar el idioma del documento, pero en XHTML


1.1 no se hace por medio del antiguo atributo lang depreciado, sino por medio del
atributo reservado de XML xml:lang; el idioma se indica por medio de su cdigo
internacional2.

Qu sea un espacio de nombres no es fcil de explicar. Por el aspecto uno podra


pensar que se trata de un documento pblico al estilo de una DTD, pero la verdad es
que, para sorpresa de muchos de nosotros, la mayora de los espacios de nombres no
existen, en el sentido de que el URL no apunta a ninguna parte, o bien no es ms que,
como en el caso de XHTML, un documento en el que dice algo as como s, ste es el
espacio de nombres (ingls).

En realidad, el espacio de nombres no es ms que un identificador que agrupa una


serie de elementos pertenecientes a la misma aplicacin XML, para s hacerlos ms
fcilmente manejables para el software que debe interpretarlos, y tambin para

4
Qu es una DTD?
diferenciar dos elementos que compartan el mismo nombre, pero que tengan una
semntica diferente en lenguajes distintos.

Se ver ms claro en el siguiente punto.

El sentido de los espacios de nombres: XHTML como anfitrin

En realidad, convertir HTML en un lenguaje basado en XML tiene como objetivo poder
integrarlo con otra serie de lenguajes basados en XML desarrollados en el mismo W3C,
y que as un documento web sea un conglomerado de los lenguajes de marcado que
sean necesarios para estructurar semnticamente su contenido.

Supongamos que tenemos un documento web que a su vez contiene informacin


matemtica. XHTML no cuenta con elementos estructurales con los que marcar
ecuaciones, pero MathML s. Sin embargo, como ambos son aplicaciones XML, su
sintaxis es la misma, slo se diferencian en los elementos y atributos que existen en
cada uno de ellos. Gracias a los espacios de nombres, estos pueden identificarse y
permitir la creacin de documentos mixtos.

Para ello, al espacio de nombres se le asigna un prefijo que despus acompaa a cada
elemento y que as los diferencia. Basta con definir en el elemento raz del documento
todos aquellos espacios que se necesiten. Por ejemplo, si quisieramos crear un
documento que pudiese emplear marcado XHTML, MathML y SVG, nuestro
documento comenzara con las siguientes lneas de cdigo:

<?xml version="1.0" encoding="utf-8"?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG
1.1//EN"
"http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">
<html xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:math="http://www.w3.org/1998/Math/MathML"
xml:lang="es">

Primero, indicamos una DTD que ya existe y que agrupa estos tres lenguajes de
marcado, y seguidamente indicamos los espacios de nombres, especificando tambin
los prefijos que luego precederan a cada elemento. As, ya podramos emplear todos
los elementos de cada lenguaje, etiquetndolos de forma inequvoca:

<?xml version="1.0" encoding="utf-8"?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG
1.1//EN"
"http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">

5
Qu es una DTD?
<html xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:math="http://www.w3.org/1998/Math/MathML"
xml:lang="es">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml" />
<meta name="language" content="es" />
<meta http-equiv="Content-Language" content="es" />
<title>Un ejemplo de documento hbridoG</title>
<link href="estilos/estilo_basico.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Ejemplo de <abbr>SVG</abbr></h1>
<p>A continuacin, presentamos un ejemplo de <abbr>SVG</abbr></p>
<svg:svg width="600px" height="600px">
<svg:desc>Un cuadrado y un crculo</svg:desc>
<svg:defs>
<svg:rect id="rectangulo" width="200" height="200" fill="red" x="10" y="10"
stroke="black" />
<svg:circle id="circulo" r="100" cx="200" cy="200" fill="white" stroke="black"
/>
</svg:defs>
</svg:svg>
<h1>Ejemplo de <abbr>MathML</abbr></h1>
<p>A continuacin, presentamos un ejemplo de <abbr>MathML</abbr></p>
<math:mrow>
<math:apply>
<math:eq/>
<math:ci>A</math:ci>
<math:matrix>
<math:matrixrow>
<math:ci>x</math:ci>
<math:ci>y</math:ci>
</math:matrixrow>
<math:matrixrow>
<math:ci>z</math:ci>
<math:ci>w</math:ci>
</math:matrixrow>
</math:matrix>
</math:apply>
</math:mrow>
</body>
</html>

6
Qu es una DTD?
Pero esto es el futuro. En este momento, lo importante es saber que se debe
especificar el tipo de documento que se est creando, las implicaciones que tiene, y
qu significa el atributo oblgatorio de html.

Y visto todo esto, pasemos a ver las diferencias entre HTML y XHTML.

Notas

1. Slo hay una excepcin, y se da cuando el documento XHTML se sirve


realmente como XML. En este caso, debe incluir antes la declaracin de XML,
<?xml version="1.0" encoding="utf-8"?>. Al conjunto que forman esta
declaracin y el <!DOCTYPE> se llama prlogo del documento.
2. La lista completa de cdigos internacionales de idiomas se especifica en las ISO
639-1 e ISO 639-2 (ingls). Como detalle anecdtico, aqu se puede comprobar
que el klingon est reconocido como idioma, y que su cdigo es tlh.