Original article: What is the DOCTYPE Declaration in HTML?

La declaración de tipo de documento HTML, también conocida como DOCTYPE, es la primera línea de código requerida en todo documento HTML o XHTML. La declaración DOCTYPE es una instrucción al navegador web sobre la versión de HTML en la cual está escrita la página. Esto asegura que la página web sea analizada de la misma manera en diferentes navegadores web.

En HTML 4.01, la declaración DOCTYPE refiere a una definición de tipo de documento (DTD, Document Type Definition). Un DTD define la estructura y los elementos legales de un documento XML. Debido a que HTML 4.01 se basó en el Lenguaje de Marcado Generalizado Estándar (Standard Generalised Markup Language, SGML), referirse a un DTD en la declaración DOCTYPE era necesario.

Además, los doctypes para HTML 4.01 requerían la declaración de un DTD strict, transitional, o frameset, cada uno con un caso de uso diferente, como se indica abajo.

  • DTD Estricto (Strict DTD): Usado por páginas web que excluyen atributos y elementos que la W3C espera ir eliminando a medida que crezca la compatibilidad con CSS.
  • DTD Transicional (Transitional DTD): Usado por páginas web que incluyen atributos y elementos que la W3C espera ir eliminando a medida que crezca la compatibilidad con CSS.
  • DTD Conjunto de marcos (Frameset DTD): Usado por páginas web con marcos.

En cambio, la declaración del DOCTYPE HTML5 es mucho más sencilla: ya no requiere una referencia a los DTDs porque ya no está basado en SGML. En los siguientes ejemplos se puede ver la comparación entre los DOCTYPE HTML 4.01 y HTML5.

Ejemplos

Sintaxis de doctype para HTML5 y posteriores:

<!DOCTYPE html>

Sintaxis de doctype para HTML 4.01 estricto:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

Sintaxis de doctype para HTML 4.01 transicional:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Sintaxis de doctype para HTML 4.01 conjunto de marcos (frameset):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

Historia

Durante los años de formación de HTML, aún no se había llegado a un acuerdo sobre los estándares de la web. Los fabricantes de los navegadores creaban nuevas funciones a su antojo. Había poca preocupación por la competencia entre navegadores.

El resultado fue que los desarrolladores web tenían que escoger un navegador sobre el cual desarrollarían sus sitios, lo que terminaba en que dichos sitios no se mostraran bien en navegadores no compatibles. Esta situación no podía continuar.

La W3C (Consorcio de la World Wide Web, World Wide Web Consortium) redactó un conjunto de estándares web para manejar esta situación.  Todos los fabricantes de navegadores y desarrolladores web deben apegarse a estos estándares, lo que asegura que los sitios web se muestren bien sin importar el navegador que se use.

Los cambios requeridos por los estándares fueron muy diferentes de algunas prácticas existentes. Apegarse a ellos rompería a los sitios web existentes que no cumplían con los estándares.

Para solucionar este problema, los fabricantes empezaron a programar modos de renderizado en sus navegadores. Los desarrolladores web necesitaban añadir una declaración doctype al principio de un documento HMTL. Dicha declaración le indicaría al navegador qué modo de renderizado usar para ese documento en específico.

Tres modos de renderizado por separado estuvieron generalmente disponibles entre navegadores.

  • Modo de estándares completo (Full standards mode) renderiza las páginas de acuerdo a los estándares web de la W3C.
  • Modo de peculiaridades (Quirks mode) renderiza las páginas de manera no conforme a los estándares.
  • Modo casi estándar (Almost standards mode) se acerca al modo de estándares completos, pero ofrece soporte a un pequeño número de peculiaridades.

En la era moderna de HTML5, los estándares web están totalmente implementados en los principales navegadores. Los sitios web son generalmente desarrollados conforme a los estándares. Por esta razón, la declaración doctype de HTML5 solo existe para indicarle al navegador que renderice el documento en modo de estándares completo.

Utilización

La declaración Doctype debe ser la primera línea de código en un documento HTML, aparte de los comentarios, los cuales pueden ir antes si es necesario. Para los documentos HTML5 modernos, la declaración doctype debe ser la siguiente:

<!DOCTYPE html>

Más Información:

Aunque ya no son de uso general, existen otros tipos de declaración doctype de versiones anteriores de HTML. También existen versiones específicas para documentos XML. Para saber más sobre ellas y ver ejemplos de códigos de cada una, consulta este artículo de Wikipedia.

A note from the W3

Entrada del Glosario MDN

W3Schools

Una explicación rápida del "Modo Quirks" y "Modo Estándar".