Documento em maiúsculas ou minúsculas?

182

Ao escrever o doctype HTML5, qual é o método correto?

<!DOCTYPE html>

ou

<!doctype html>
joshnh
fonte
Será o primeiro normalmente, embora qualquer um possa ser usado <! DOCTYPE html>
Shadow
Consegui responder à minha própria pergunta, mas pensei em deixá-la caso outros tivessem um pensamento semelhante. Eu pessoalmente prefiro letras minúsculas; nada mais no HTML5 está em maiúsculas.
joshnh
11
Google.com usa letras minúsculas<!doctype html>
Leo Galleguillos 22/11
3
@ HelloWorld: Isso ocorre porque as letras minúsculas são compactadas melhor porque são mais comuns. Para sites que recebem milhões de acessos por dia, isso pode fazer a diferença.
Zaz
E quanto aos arquivos SVG?
William Entriken

Respostas:

183

Em HTML, o DOCTYPE não diferencia maiúsculas de minúsculas. Os seguintes DOCTYPEs são todos válidos:

<!doctype html>
<!DOCTYPE html>
<!DOCTYPE HTML>
<!DoCtYpE hTmL>

Nas serializações XML (ou seja, XHTML), o DOCTYPE não é necessário, mas se você o usar, DOCTYPEdeve estar em maiúsculas:

<!DOCTYPE html>

Consulte A serialização XML do HTML5, também conhecida como 'XHTML5' :

Observe que, se você não maiúsculas DOCTYPEem um documento XHTML, o analisador XML retornará um erro de sintaxe.

A segunda parte pode ser escrita em letras minúsculas ( html), maiúsculas ( HTML) ou até maiúsculas ( hTmL) - ainda funcionará. No entanto, para estar em conformidade com as Diretrizes de marcação poliglota para documentos XHTML compatíveis com HTML , ele deve ser escrito em letras minúsculas.

Mathias Bynens
fonte
9
Não, isso está incorreto. No SGML, a declaração do tipo de documento é produção 110, em XML, produção 28. Nos dois casos, é declarada como a sequência fixa "DOCTYPE" (que não é uma marca , é uma palavra - chave ). Portanto, nas definições canônicas nos respectivos padrões SGML e XML, ela é sempre maiúscula. Se você encontrar um software que permita um "doctype" minúsculo, esse software não está em conformidade com os padrões. Os navegadores são projetados para serem "liberais no que aceitam", mas um processador XML compatível deve sinalizar isso como um erro de validação.
Ichiro Furusato
5
... e devo salientar que o X / HTML5 também está incorreto nisso. Conforme especificado, XHTML5 simplesmente não é uma marcação XML válida, nem pode ser. Existem vários erros na especificação X / HTML5. Eu não levo isso muito a sério. O fato de que eles tiveram que criar uma " marcação poliglota " (um conceito completamente novo) diz claramente que eles fizeram o trabalho.
Ichiro Furusato
20
@ Ichiro Estou falando de HTML, não de SGML. Nenhum navegador já implementou o SGML. Se eles fizeram, <title/foo/seria equivalente a <title>foo</title>. Apenas alguns validadores de HTML usam SGML. A especificação do HTML5 é a primeira a esclarecer isso: whatwg.org/specs/web-apps/current-work/multipage/…
Mathias Bynens
2
@ TestSubject528491 Esse parágrafo é sobre a segunda parte do DOCTYPE ( html). Aqui está a frase completa: “A segunda parte pode ser escrita em letras minúsculas ( html), maiúsculas ( HTML) ou até maiúsculas ( hTmL) - ainda funcionará. No entanto, para estar em conformidade com as Diretrizes de marcação poliglota para documentos XHTML compatíveis com HTML, ele deve ser escrito em letras minúsculas. ”
Mathias Bynens
15
@IchiroFurusato Você pode querer ler em HTML5 . Citação: “No entanto, diferentemente das versões anteriores do HTML, a serialização do HTML [5] não é mais considerada uma aplicação do SGML, mas define sua própria sintaxe. Embora a sintaxe seja inspirada no SGML, ela está sendo definida de uma maneira que se assemelha mais à maneira como os navegadores realmente lidam com HTML no mundo real, particularmente no que diz respeito ao tratamento de erros. ”
Mathias Bynens
40

Se alguém ainda estiver se perguntando em 2014, consulte:

HTML5

W3 HTML5 Spec - Doctype

Um DOCTYPE deve consistir nos seguintes componentes, nesta ordem:

1. A string that is an ASCII case-insensitive match for the string "<!DOCTYPE".
...

Nota: apesar de ser exibido em todas as maiúsculas, a especificação afirma que é insensível

-------------------------------------------------- --------------------

XHTML5

W3 HTML5 - XHTML

This specification does not define any syntax-level requirements 
beyond those defined for XML proper.

XML documents may contain a DOCTYPE if desired, but this is not required 
to conform to this specification. This specification does not define 
a public or system identifier, nor provide a formal DTD.

Observando a especificação XML, ela lista DOCTYPE em maiúsculas, mas não consigo encontrar nada que indique que 'all caps' é necessário (para comparação, na especificação HTML5 listada acima, ela é exibida no exemplo em maiúsculas, mas a especificação declara explicitamente que não diferencia maiúsculas de minúsculas ).

-------------------------------------------------- --------------------

Marcação poliglota

Marcação poliglota W3 - Introdução

Às vezes, é valioso poder veicular documentos HTML5 que também são documentos XML bem formados.

Marcação poliglota W3 - Doctype

A marcação poliglota usa uma declaração de tipo de documento (DOCTYPE) especificada na seção 8.1.1 de [HTML5]. Além disso, o DOCTYPE está em conformidade com as seguintes regras:

* The string DOCTYPE is in uppercase letters.

Portanto, observe que a marcação do Ployglot usa um doctype HTML5 comum, mas com adições / alterações. Para nossa discussão, principalmente que DOCTYPE é declarado em todas as maiúsculas .

-------------------------------------------------- --------------------

Somatório

Veja a seção HTML vs. XHTML do W3

[Opinião] Eu não me preocuparia muito em satisfazer a conformidade com XML, a menos que você esteja especificamente tentando fazer considerações a respeito. Para a maioria dos clientes e o desenvolvimento de servidores baseados em JS, o JSON substituiu o XML.

Portanto, só posso ver isso se aplicando se você estiver tentando atualizar um sistema legado existente baseado em xhtml / xml para coexistir com a nova funcionalidade HTML5. Se for esse o caso, verifique as especificações da marcação poliglota.

ucsarge
fonte
18

De acordo com as especificações mais recentes , você deve usar algo que não diferencia maiúsculas de minúsculas <!DOCTYPE html>. Portanto, embora seja necessário que os navegadores suportem o caso que você preferir, é razoável inferir disso que <!DOCTYPE html>é o caso canônico.

John Mellor
fonte
3
A especificação afirma claramente que doctype deve conter uma string que seja o equivalente a maiúsculas e minúsculas de '<! DOCTYPE', implicando, portanto, que '<! DOcTyPe' esteja correto.
joshnh
6
Como eu disse, a especificação requer que os navegadores suportem qualquer caso, portanto, qualquer caso funcionará. Mas a questão-autor da questão está claramente à procura de uma forma normal, canônica, por isso, na ausência de fortes razões para escolher um sobre o outro, assim como você pode usar o exemplo de caso a partir da especificação ...
John Mellor
9
A especificação o escreve consistentemente como <!DOCTYPE html>, portanto, seria razoável inferir que o autor da especificação tem uma leve preferência por essa capitalização específica. Vou usar a mesma capitalização como a especificação, já que é bom para essas coisas para ser consistente, mas se você preferir <!dOcTyPe, em seguida, seja meu convidado :)
John Mellor
3
@joshnh Eu não entendo sua confusão. 1) A declaração DOCTYPE deve fazer distinção entre maiúsculas e minúsculas. 2) A especificação HTML5 usa a maiúscula "DOCTYPE html" em seus exemplos. Toda essa resposta parece estar dizendo é que uma capitalização é consistente com a literatura, mesmo que todas sejam válidas. Por que isso é tão ultrajante?
2
Acho que @joshnh não entendeu o que John estava tentando dizer. FWIW, eu concordo com o sentimento de John de que, na ausência de qualquer motivo específico para formatar de uma certa maneira, é preferível seguir o que a especificação pede que os navegadores verifiquem. John nunca estava tentando sugerir que é mais correto, apenas que é algo para basear sua preferência - caso contrário, é uma escolha completamente arbitrária, certo?
Ryan Williams
7

Letras maiúsculas ou minúsculas estão "corretas". No entanto, se você usa fontes da web e se preocupa com o IE7, recomendo usar <!DOCTYPE html>devido a um erro no IE7, onde as fontes da web às vezes falham se estiverem sendo usadas <!doctype html>(por exemplo, nesta resposta ).

É por isso que eu sempre uso maiúsculas no doctype.

jpw
fonte
6

O padrão para HTML5 é que as tags não diferenciam maiúsculas de minúsculas.

http://www.w3schools.com/html5/tag_doctype.asp

Mais tecnicamente: ( http://www.w3.org/TR/html5/syntax.html )

Um DOCTYPE deve consistir nos seguintes componentes, nesta ordem:

  1. Uma sequência que é uma correspondência que não diferencia maiúsculas de minúsculas ASCII para a sequência <!DOCTYPE.
Stephen
fonte
35
Não confio 100% no W3Schools, eles não são afiliados ao W3C e, embora a maioria de suas informações seja boa, algumas delas não são.
joshnh
Isto é bastante conhecido - aqui está o link w3.org: w3.org/TR/html5/syntax.html
Stephen
4
O W3Schools não tem mais ou menos erros do que outros sites. ( Exemplo completamente aleatório ) Pegue as informações com um pouco de sal, consulte as páginas do w3.org em caso de dúvida e você ficará bem. Os verdadeiros idiotas são aqueles que acreditam que o W3Schools é um órgão oficial ou que seus certificados significam alguma coisa.
Lister
8
@ MrLister: Eu não acho justo chamar as pessoas de idiotas porque elas acham que existe um link entre algo chamado "W3Schools" e algo chamado "W3C". Os dois são semelhantes o suficiente em nome e domínio para causar confusão, e a suposição de que o primeiro seja de alguma forma endossado ou relacionado a ele. Essa é claramente a intenção da W3Schools, que é uma das razões pelas quais eles irritam tantas pessoas que entendem o problema. O fato de que um monte de suas informações é compostos imprecisos o problema (ou seja, pode ser um pouco perdoável se eles efectivamente prestado um serviço razoável)
Bobby Jack
O link para tag_doctype.aspé inválido (404) e esta pergunta é sobre a doctypedeclaração, que não é uma tag ... Enfim, a conclusão está correta: no HTML5, a palavra-chave doctypepode estar em maiúsculas, minúsculas ou mistas.
Abel
3

A pergunta implica que há apenas uma resposta correta, fornece uma escolha múltipla de duas e nos pede para escolher uma. Gostaria de sugerir que para HTML5 tanto <!DOCTYPE html>e <!doctype html>são válidos.

Portanto, um navegador compatível com HTML5 aceitaria o minúsculo e processaria o html corretamente.

Ouvi dizer que navegadores anteriores e alheios ao HTML5, mesmo sem um doctype, tentarão processar o html da melhor maneira possível. E se eles não reconhecerem o doctype em minúsculas, farão o mesmo. Portanto, não faz sentido torná-lo em maiúsculas, pois esses navegadores não poderão implementar totalmente nenhuma declaração HTML5.

Clive
fonte
0

A declaração doctype faz distinção entre maiúsculas e minúsculas e qualquer sequência de caracteres ASCII que corresponda

Padrão html5

Ichoku Chinonso
fonte