Artigo original: What is the DOCTYPE Declaration in HTML?

A declaração de tipo de documento no HTML, também conhecida como DOCTYPE, é a primeira linha de código necessária em qualquer documento, HTML ou XHTML. A declaração de DOCTYPE é uma instrução para o navegador da web que diz em qual versão do HTML a página é escrita. Isso garante que a página da web seja analisada e exibida da mesma maneira por navegadores da web diferentes.

Em HTML 4.01, a declaração de DOCTYPE tem a ver com uma definição de tipo de documento (ou por sua sigla, DTD). Uma DTD define a estrutura e os elementos legais de um documento XML. Como o HTML 4.01 tinha como base a Standard Generalised Markup Language (SGML, ou linguagem de marcação generalizada padrão), a referência a uma DTD na declaração de DOCTYPE era necessária.

Além disso, doctype no HTML 4.01 exigia a declaração de uma DTD strict, transitional ou frameset, cada uma delas com um caso de uso diferente, como descrevemos abaixo.

  • DTD 'strict': usado por páginas da web que excluíam atributos e elementos que a W3C esperava que saíssem de circulação conforme aumentava o suporte ao CSS
  • DTD 'transitional': usado por páginas da web que incluíam  atributos e elementos que a W3C esperava que saíssem de circulação conforme aumentava o suporte ao CSS
  • DTD 'frameset': usado por páginas da web com frames

Por outro lado, a declaração de DOCTYPE do HTML 5 é muito mais simples: ela já não precisa de uma referência às DTDs, pois já não se baseia mais em SGML. Veja os exemplos abaixo para ter uma comparação entre as declarações de DOCTYPE do HTML 4.01 e do HTML 5.

Exemplos

Sintaxe de doctype do HTML5 e posteriores:

<!DOCTYPE html>

Sintaxe de doctype do HTML 4.01 'strict':

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

Sintaxe de doctype do HTML 4.01 'transitional':

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

Sintaxe de doctype do HTML 4.01 para 'framesets':

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

Histórico

Durante os primeiros anos do HTML, os padrões da web não eram aceitos do mesmo modo por todos os fabricantes de navegadores. Eles criavam os recursos do modo que eles mesmos queria, não havendo uma preocupação com os navegadores concorrentes.

O resultado foi a necessidade de os desenvolvedores da web precisarem escolher um navegador para o qual desenvolveriam os seus sites. Desse modo, os sites não renderizariam corretamente em navegadores não suportados. Essa era uma situação que não podia continuar.

O W3C (World Wide Web Consortium) escreveu um conjunto de padrões da web para lidar com essa situação. Todos os fabricantes de navegadores e desenvolvedores para a web deveriam aderir a esses padrões. Isso garantiria que os sites da web renderizariam corretamente em qualquer navegador.

As mudanças requeridas pelos padrões eram bastante diferentes de algumas práticas existentes. Aderir a elas poderia quebrar os sites da web existentes e que não estavam de acordo com os padrões.

Para lidar com esse problema, os fabricantes começaram a criar modos de renderizar por programação em seus navegadores. Os desenvolvedores para a web precisaram adicionar uma declaração de doctype à parte superior de seu documento de HTML. Essa declaração diria ao navegador qual o modo de renderização deveria ser usado para aquele documento.

Três modos de renderização separados estavam normalmente disponíveis em todos os navegadores:

  • o modo totalmente nos padrões (ou Full standards mode), que renderizava as páginas de acordo com os padrões da web do W3C.
  • o modo 'com peculiaridades' (ou Quirks mode), que renderizava as páginas criadas de modo não conforme aos padrões.
  • o modo 'quase' nos padrões (ou Almost standards mode), que era próximo ao modo totalmente nos padrões, mas que ainda dava suporte a algumas das 'peculiaridades'.

No momento atual do HTML 5, os padrões da web estão totalmente implementados em todos os navegadores mais importantes. Os sites da web sites geralmente são desenvolvidos em conformidade com os padrões do W3C. Assim, a declaração de doctype do HTML 5 existe apenas para informar o navegador de que ele deve renderizar o documento no modo totalmente nos padrões.

Uso

A declaração de doctype deve ser a primeira linha de código de um documento em HTML, excetuando possíveis comentários, que podem vir antes, caso necessário. Para documentos de HTML 5 modernos, a declaração de doctype deve ser feita assim:

<!DOCTYPE html>

Para mais informações:

Embora não seja mais de uso geral, existem vários outros tipos de declarações de doctype vindas de versões anteriores do HTML. Também há versões específicas para documentos em XML. Para ler mais sobre isso e para ver exemplos de código para cada uma dessas versões, dê uma olhada nesse artigo da Wikipédia (em inglês – também há uma versão em português, mas com conteúdo bastante reduzido).

Confira também os sites abaixo:

Uma observação da W3 sobre Doctype (em inglês)

W3Schools (em inglês)

Entrada sobre Doctype no glossário da MDN

Uma rápida explicação da MDN sobre o modo de peculiaridades ("quirks") e sobre o modo padrão