¿Qué es un DTD? ¿Cuál es la relación entre un DOCTYPE y un DTD en HTML?

DTD significa Definición de tipo de documento, es un documento que describe las etiquetas y los atributos permitidos en un documento XML o SGML. El software puede utilizar un DTD para asegurarse de que un documento determinado sea coherente con un estándar particular (validar el documento). Como regla general, los navegadores nunca validan un documento contra un DTD.

Un DOCTYPE es una declaración al comienzo de un documento XML o SGML que especifica el tipo de documento que sigue. Puede contener un nombre simple de un tipo de documento, un nombre con el nombre del estándar que lo define, un nombre con el estándar y un URI para la DTD que lo describe, o un nombre con una DTD incrustada en el documento. El DOCTYPE puede ser utilizado por el software de validación para verificar que el documento esté bien formado, y los navegadores web a veces lo usan para insinuar cómo el navegador debe diseñar la página (según la versión de HTML que cree que está utilizando).

Los estándares HTML especifican que cada documento contiene una declaración DOCTYPE. HTML4 se basó en SGML, que especificó que DOCTYPE debe contener una referencia a un documento DTD. HTML5 no tiene el mismo requisito, y el DOCTYPE en un documento HTML5 existe únicamente como una confirmación de que el documento debe tratarse como datos HTML.

En HTML5, se utiliza lo siguiente (cuando se proporciona, un DOCTYPE es estrictamente opcional):


En HTML4.01, se utilizaron 3 declaraciones de tipo de documento, dependiendo de si el contenido era estrictamente compatible con HTML4, de transición (manteniendo algunos de los elementos HTML3 que estaban en desuso en HTML4) o un conjunto de marcos. Respectivamente:




También hay una variante de HTML basada en XML llamada XHTML que también requiere declaraciones DOCTYPE de estilo XML.