Doctype majuscule ou minuscule?

182

Lors de l'écriture du doctype HTML5, quelle est la méthode correcte?

<!DOCTYPE html>

ou

<!doctype html>
Joshnh
la source
Ce sera le premier généralement, bien que tout puisse être utilisé <! DOCTYPE html>
Shadow
J'ai réussi à répondre à ma propre question, mais j'ai pensé que je la laisserais au cas où d'autres auraient une pensée similaire. Personnellement, je préfère les minuscules; rien d'autre en HTML5 n'est en majuscule.
joshnh
11
Google.com utilise une minuscule<!doctype html>
Leo Galleguillos
3
@HelloWorld: C'est parce que les lettres minuscules se compressent mieux parce qu'elles sont plus courantes. Pour les sites qui enregistrent des millions de visites par jour, cela peut faire la différence.
Zaz
Qu'en est-il des fichiers SVG?
William Entriken

Réponses:

183

En HTML, le DOCTYPE est insensible à la casse. Les DOCTYPE suivants sont tous valides:

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

Dans les sérialisations XML (c'est-à-dire XHTML), le DOCTYPE n'est pas requis, mais si vous l'utilisez, il DOCTYPEdoit être en majuscules:

<!DOCTYPE html>

Voir La sérialisation XML de HTML5, alias 'XHTML5' :

Notez que si vous n'utilisez pas de majuscules DOCTYPEdans un document XHTML, l'analyseur XML renverra une erreur de syntaxe.

La deuxième partie peut être écrite en minuscules ( html), en majuscules ( HTML) ou même en casse mixte ( hTmL) - cela fonctionnera toujours. Cependant, pour se conformer aux Directives de balisage Polyglot pour les documents XHTML compatibles HTML , il doit être écrit en minuscules.

Mathias Bynens
la source
9
Non, c'est incorrect. En SGML, la déclaration de type de document est production 110, en XML c'est production 28. Dans les deux cas, elle est déclarée comme la chaîne fixe "DOCTYPE" (qui n'est pas une balise , c'est un mot clé ). Ainsi, dans les définitions canoniques des normes SGML et XML respectives, il est toujours en majuscule. Si vous trouvez un logiciel qui autorise un «doctype» minuscule, ce logiciel n'est pas conforme aux normes. Les navigateurs sont conçus pour être «libéraux dans ce qu'ils acceptent», mais un processeur XML conforme doit signaler cela comme une erreur de validation.
Ichiro Furusato
5
... et je dois souligner que X / HTML5 est également incorrect à ce sujet. Comme spécifié, XHTML5 n'est tout simplement pas un balisage XML valide, ni ne peut l'être. Il existe de nombreuses erreurs dans la spécification X / HTML5. Je ne le prends pas très au sérieux. Le fait qu'ils aient dû créer un " balisage polyglotte " (un concept complètement nouveau) indique clairement qu'ils ont punté.
Ichiro Furusato
20
@Ichiro Je parle de HTML, pas de SGML. Aucun navigateur n'a jamais implémenté SGML. S'ils le faisaient, <title/foo/cela équivaudrait à <title>foo</title>. Seuls quelques validateurs HTML utilisent SGML. La spécification HTML5 est la première à clarifier ceci: whatwg.org/specs/web-apps/current-work/multipage/…
Mathias Bynens
2
@ TestSubject528491 Ce paragraphe concerne la deuxième partie du DOCTYPE ( html). Voici la phrase complète: «La deuxième partie peut être écrite en minuscules ( html), en majuscules ( HTML) ou même en casse mixte ( hTmL) - cela fonctionnera toujours. Cependant, pour se conformer aux Directives de balisage Polyglot pour les documents XHTML compatibles HTML, il doit être écrit en minuscules. »
Mathias Bynens
15
@IchiroFurusato Vous voudrez peut-être lire sur HTML5 . Citation: «Cependant, contrairement aux versions précédentes de HTML, la sérialisation HTML [5] n'est plus considérée comme une application de SGML, mais définit plutôt sa propre syntaxe. Bien que la syntaxe soit inspirée de SGML, elle est définie d'une manière qui ressemble davantage à la façon dont les navigateurs gèrent réellement le HTML dans le monde réel, en particulier en ce qui concerne la gestion des erreurs. »
Mathias Bynens
40

Si quelqu'un se demande encore en 2014, veuillez consulter ceci:

HTML5

Spécification W3 HTML5 - Doctype

Un DOCTYPE doit être composé des composants suivants, dans cet ordre:

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

Remarque: bien qu'il soit affiché en majuscules, la spécification indique qu'il est insensible

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

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.

En regardant la spécification XML, elle répertorie DOCTYPE en majuscules, mais je ne trouve rien qui indique que `` tout en majuscules '' est requis (à titre de comparaison, dans la spécification HTML5 répertoriée ci-dessus, il est affiché dans l'exemple en majuscules, mais la spécification déclare explicitement qu'elle est insensible à la casse ).

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

Balisage polyglotte

Balisage polyglotte W3 - Introduction

Il est parfois utile de pouvoir servir des documents HTML5 qui sont également des documents XML bien formés.

Balisage polyglotte W3 - Doctype

Le balisage Polyglot utilise une déclaration de type de document (DOCTYPE) spécifiée par la section 8.1.1 de [HTML5]. De plus, le DOCTYPE est conforme aux règles suivantes:

* The string DOCTYPE is in uppercase letters.

Donc, notez que Ployglot Markup utilise un doctype HTML5 normal, mais avec des ajouts / changements. Pour notre discussion, plus particulièrement que DOCTYPE est déclaré en majuscules .

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

Addition

Voir la section HTML vs XHTML du W3

[Opinion] Je ne m'inquiéterais pas trop de la conformité XML à moins que vous n'essayiez spécifiquement d'y réfléchir. Pour la plupart des développements de clients et de serveurs basés sur JS, JSON a remplacé XML.

Par conséquent, je ne peux voir cela vraiment s'appliquer que si vous essayez de mettre à jour un système existant basé sur xhtml / xml pour coexister avec de nouvelles fonctionnalités HTML5. Si tel est le cas, examinez la spécification de balisage polyglotte.

ucsarge
la source
18

Selon la dernière spécification , vous devez utiliser quelque chose qui ne respecte pas la casse <!DOCTYPE html>. Ainsi, bien que les navigateurs soient tenus de prendre en charge le cas que vous préférez, il est raisonnable d'en déduire que <!DOCTYPE html>c'est le cas canonique.

John Mellor
la source
3
La spécification indique assez clairement que doctype doit contenir une chaîne qui est l'équivalent insensible à la casse de '<! DOCTYPE', ce qui implique donc que '<! DOcTyPe' est tout aussi correct.
joshnh
6
Comme je l'ai dit, les spécifications exigent que les navigateurs prennent en charge tous les cas, donc tous les cas fonctionneront. Mais le poseur de questions recherche clairement une forme canonique standard, donc en l'absence de bonnes raisons de choisir l'une plutôt que l'autre, vous pouvez aussi bien utiliser l'exemple de cas de la spécification ...
John Mellor
9
La spécification l'écrit systématiquement comme <!DOCTYPE html>, par conséquent, il serait raisonnable de déduire que l'auteur de la spécification a une légère préférence pour cette capitalisation particulière. Je vais utiliser la même capitalisation que la spécification, car c'est bien que ces choses soient cohérentes, mais si vous préférez <!dOcTyPeêtre mon invité :)
John Mellor
3
@joshnh Je ne comprends pas votre confusion. 1) La déclaration DOCTYPE doit être insensible à la casse. 2) La spécification HTML5 utilise la majuscule "DOCTYPE html" dans ses exemples. Tout ce que cette réponse semble dire est qu'une capitalisation est cohérente avec la littérature, même si toutes sont valides. Pourquoi est-ce si scandaleux?
2
Je pense que @joshnh a mal compris ce que John essayait de dire. FWIW, je suis d'accord avec le sentiment de John qu'en l'absence de raison particulière de formater d'une certaine manière, il est préférable de suivre ce que la spécification demande aux navigateurs de vérifier. John n'a jamais essayé de suggérer que c'est plus correct, seulement que c'est quelque chose sur lequel baser votre préférence - sinon c'est un choix complètement arbitraire, non?
Ryan Williams
7

Les majuscules ou les minuscules sont «correctes». Cependant, si vous utilisez des polices Web et que vous vous souciez d'IE7, je vous recommande d'utiliser en <!DOCTYPE html>raison d'un bogue dans IE7 où les polices Web échouent parfois si elles sont utilisées <!doctype html>(par exemple dans cette réponse ).

C'est pourquoi je mets toujours en majuscules le doctype.

jpw
la source
6

La norme pour HTML5 est que les balises ne sont pas sensibles à la casse.

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

Plus techniquement: ( http://www.w3.org/TR/html5/syntax.html )

Un DOCTYPE doit être composé des composants suivants, dans cet ordre:

  1. Chaîne qui correspond à une correspondance ASCII insensible à la casse pour la chaîne <!DOCTYPE.
Stephen
la source
35
Je ne fais pas confiance à W3Schools à 100%, ils ne sont pas affiliés au W3C et bien que la plupart de leurs informations soient bonnes, certaines ne le sont pas.
joshnh
Ceci est assez largement connu - voici le lien w3.org
Stephen
4
W3Schools n'a pas plus ou moins d'erreurs que les autres sites Web. ( Exemple complètement aléatoire ) Prenez les informations avec un grain de sel, consultez les pages w3.org en cas de doute, et tout ira bien. Les vrais imbéciles sont ceux qui croient que W3Schools est un organisme officiel ou que leurs certificats signifient n'importe quoi.
Mr Lister
8
@MrLister: Je ne pense pas qu'il soit juste de traiter les gens d'idiots parce qu'ils pensent qu'il y a un lien entre quelque chose qui s'appelle "W3Schools" et quelque chose qui s'appelle "W3C". Les deux sont assez similaires en nom et en domaine pour prêter à confusion, et l'hypothèse selon laquelle le premier est en quelque sorte approuvé par le second ou lié à celui-ci. C'est manifestement l'intention de W3Schools, qui est l'une des raisons pour lesquelles ils mettent en colère tant de gens qui comprennent le problème. Le fait qu'une grande partie de leurs informations soient inexactes aggrave le problème (c'est-à-dire qu'il pourrait être légèrement pardonnable s'ils fournissaient réellement un service raisonnable)
Bobby Jack
Le lien vers tag_doctype.aspest invalide (404) et cette question concerne la doctypedéclaration, qui n'est pas une balise ... Quoi qu'il en soit, la conclusion est correcte: en HTML5, le mot-clé doctypepeut être en majuscule, minuscule ou mixte.
Abel le
3

La question implique qu'il n'y a qu'une seule bonne réponse, fournit un choix multiple de deux et nous demande d'en choisir une. Je suggérerais que pour HTML5 à la fois <!DOCTYPE html>et <!doctype html>sont valides.

Ainsi, un navigateur compatible HTML5 accepterait les minuscules et traiterait correctement le code HTML.

Les navigateurs précédents et inconscients de HTML5, j'ai entendu dire, même sans doctype, tenteront de traiter le html du mieux qu'ils le peuvent. Et s'ils ne reconnaissent pas le doctype minuscule, ils feront de même. Il ne sert donc à rien de le mettre en majuscule puisque ces navigateurs ne pourront de toute façon pas implémenter complètement les déclarations HTML5.

Clive
la source
0

La déclaration doctype est insensible à la casse, et toute chaîne ASCII qui correspond

Norme HTML5

Ichoku Chinonso
la source