Doctype in Groß- oder Kleinbuchstaben?


182

Was ist die richtige Methode beim Schreiben des HTML5-Doctype?

<!DOCTYPE html>

oder

<!doctype html>

Es wird normalerweise das erste sein, obwohl jedes verwendet werden kann <! DOCTYPE html>
Shadow

Es gelang mir, meine eigene Frage zu beantworten, aber ich dachte, ich würde sie verlassen, falls andere einen ähnlichen Gedanken hatten. Ich persönlich bevorzuge Kleinbuchstaben. nichts anderes in HTML5 ist in Großbuchstaben.
Joshnh

11
Google.com verwendet Kleinbuchstaben<!doctype html>
Leo Galleguillos

3
@HelloWorld: Das liegt daran, dass Kleinbuchstaben besser komprimiert werden, weil sie häufiger vorkommen. Für Websites, die täglich Millionen von Treffern erhalten, kann dies einen Unterschied machen.
Zaz

Was ist mit SVG-Dateien?
William Entriken

Antworten:


183

In HTML wird bei DOCTYPE die Groß- und Kleinschreibung nicht berücksichtigt. Die folgenden DOCTYPEs sind alle gültig:

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

In XML-Serialisierungen (dh XHTML) ist DOCTYPE nicht erforderlich. Wenn Sie es jedoch verwenden, DOCTYPEsollte es in Großbuchstaben geschrieben werden:

<!DOCTYPE html>

Siehe Die XML-Serialisierung von HTML5, auch bekannt als 'XHTML5' :

Beachten Sie DOCTYPE, dass der XML-Parser einen Syntaxfehler zurückgibt, wenn Sie in einem XHTML-Dokument keine Großbuchstaben eingeben.

Der zweite Teil kann in Kleinbuchstaben ( html), Großbuchstaben ( HTML) oder sogar in Großbuchstaben ( hTmL) geschrieben werden - es funktioniert weiterhin. Um den Polyglot-Markup-Richtlinien für HTML-kompatible XHTML-Dokumente zu entsprechen , sollte sie jedoch in Kleinbuchstaben geschrieben werden.


9
Nein, das ist falsch. In SGML ist die Dokumenttypdeklaration die Produktion 110, in XML die Produktion 28. In beiden Fällen wird sie als feste Zeichenfolge "DOCTYPE" deklariert (dies ist kein Tag , sondern ein Schlüsselwort ). In den kanonischen Definitionen in den jeweiligen SGML- und XML-Standards wird es also immer in Großbuchstaben geschrieben. Wenn Sie Software finden, die einen "Doctype" in Kleinbuchstaben zulässt, entspricht diese Software nicht den Standards. Browser sind so konzipiert, dass sie "liberal in dem sind, was sie akzeptieren", aber ein kompatibler XML-Prozessor sollte dies als Validierungsfehler kennzeichnen.
Ichiro Furusato

5
... und ich sollte darauf hinweisen, dass X / HTML5 auch hier falsch ist. Wie angegeben, ist XHTML5 einfach kein gültiges XML-Markup und kann es auch nicht sein. Die X / HTML5-Spezifikation enthält zahlreiche Fehler. Ich nehme es nicht sehr ernst. Die Tatsache, dass sie ein " polyglottes Markup " (ein völlig neues Konzept) erstellen mussten, zeigt deutlich, dass sie gestoßen sind.
Ichiro Furusato

20
@Ichiro Ich spreche von HTML, nicht von SGML. Kein Browser hat jemals SGML implementiert. Wenn sie das taten, <title/foo/wäre das gleichbedeutend mit <title>foo</title>. Nur wenige HTML- Validatoren verwenden SGML. Die HTML5-Spezifikation ist die erste, die dies klarstellt: whatwg.org/specs/web-apps/current-work/multipage/…
Mathias Bynens

2
@ TestSubject528491 In diesem Absatz geht es um den zweiten Teil von DOCTYPE ( html). Hier ist der vollständige Satz: „Der zweite Teil kann in Kleinbuchstaben ( html), Großbuchstaben ( HTML) oder sogar in Großbuchstaben ( hTmL) geschrieben werden - er funktioniert weiterhin. Um jedoch den Polyglot-Markup-Richtlinien für HTML-kompatible XHTML-Dokumente zu entsprechen, sollte es in Kleinbuchstaben geschrieben werden. “
Mathias Bynens

15
@IchiroFurusato Vielleicht möchten Sie sich über HTML5 informieren . Zitat: „Im Gegensatz zu früheren HTML-Versionen wird die HTML [5] -Serialisierung jedoch nicht mehr als Anwendung von SGML betrachtet, sondern definiert stattdessen ihre eigene Syntax. Während die Syntax von SGML inspiriert ist, wird sie so definiert, dass sie der Art und Weise, wie Browser tatsächlich mit HTML in der realen Welt umgehen, ähnlicher ist, insbesondere in Bezug auf die Fehlerbehandlung. “
Mathias Bynens

40

Wenn sich 2014 noch jemand wundert, konsultieren Sie bitte Folgendes:

HTML5

W3 HTML5 Spec - Doctype

Ein DOCTYPE muss in dieser Reihenfolge aus folgenden Komponenten bestehen:

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

Hinweis: Obwohl in Großbuchstaben angezeigt, wird in der Spezifikation angegeben, dass es unempfindlich ist

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

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.

In der XML-Spezifikation wird DOCTYPE in Großbuchstaben aufgeführt, aber ich kann nichts finden, das besagt, dass "alle Großbuchstaben" erforderlich sind (zum Vergleich wird es in der oben aufgeführten HTML5-Spezifikation im Beispiel in Großbuchstaben angezeigt, aber In der Spezifikation wird ausdrücklich angegeben, dass die Groß- und Kleinschreibung nicht berücksichtigt wird .

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

Polyglot Markup

W3 Polyglot Markup - Intro

Manchmal ist es hilfreich, HTML5-Dokumente bereitstellen zu können, die auch gut geformte XML-Dokumente sind.

W3 Polyglot Markup - Doctype

Polyglot-Markup verwendet eine Dokumenttypdeklaration (DOCTYPE), die in Abschnitt 8.1.1 von [HTML5] angegeben ist. Darüber hinaus entspricht der DOCTYPE den folgenden Regeln:

* The string DOCTYPE is in uppercase letters.

Beachten Sie also, dass Ployglot Markup einen regulären HTML5-Doctype verwendet, jedoch mit Ergänzungen / Änderungen. Für unsere Diskussion vor allem, dass DOCTYPE in Großbuchstaben deklariert ist .

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

Summe

Zeigen Sie den Abschnitt HTML vs. XHTML des W3 an

[Meinung] Ich würde mir keine Sorgen um die Einhaltung der XML-Konformität machen, es sei denn, Sie versuchen ausdrücklich, Überlegungen anzustellen. Für die meisten Client- und JS-basierten Serverentwicklungen hat JSON XML ersetzt.

Daher kann ich nur sehen, dass dies wirklich zutrifft, wenn Sie versuchen, ein vorhandenes xhtml / xml-basiertes Legacy-System so zu aktualisieren, dass es mit neuen HTML5-Funktionen koexistiert. Wenn dies der Fall ist, schauen Sie in die Polyglot-Markup-Spezifikation.


18

Gemäß der neuesten Spezifikation sollten Sie etwas verwenden, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird <!DOCTYPE html>. Obwohl Browser erforderlich sind, um den von Ihnen bevorzugten Fall zu unterstützen, ist es vernünftig, daraus <!DOCTYPE html>den kanonischen Fall abzuleiten.


3
Die Spezifikation besagt ziemlich deutlich, dass doctype eine Zeichenfolge enthalten muss, bei der die Groß- und Kleinschreibung nicht berücksichtigt wird, was bedeutet, dass '<! DOcTyPe' genauso korrekt ist.
Joshnh

6
Wie gesagt, die Spezifikation erfordert, dass Browser jeden Fall unterstützen, damit jeder Fall funktioniert. Aber der Fragesteller sucht eindeutig nach einer kanonischen Standardform. Wenn also keine triftigen Gründe vorliegen, eine über die andere zu wählen, können Sie auch den Beispielfall aus der Spezifikation verwenden ...
John Mellor

9
Die Spezifikation schreibt es konsequent als <!DOCTYPE html>, daher wäre es vernünftig zu schließen, dass der Autor der Spezifikation diese bestimmte Großschreibung leicht bevorzugt. Ich werde die gleiche Groß- und Kleinschreibung wie die Spezifikation verwenden, da es schön ist, dass diese Dinge konsistent sind, aber wenn Sie es vorziehen, <!dOcTyPedann seien Sie mein Gast :)
John Mellor

3
@ Joshnh Ich verstehe deine Verwirrung nicht. 1) Bei der DOCTYPE-Erklärung muss die Groß- und Kleinschreibung nicht berücksichtigt werden. 2) Die HTML5-Spezifikation verwendet in ihren Beispielen die Großschreibung "DOCTYPE html". Diese Antwort scheint nur zu sagen, dass eine Großschreibung mit der Literatur übereinstimmt, auch wenn alle gültig sind. Warum ist das so empörend?

2
Ich denke, @joshnh hat falsch verstanden, was John zu sagen versuchte. FWIW, ich stimme Johns Ansicht zu, dass es vorzuziehen ist, wenn kein besonderer Grund vorliegt, eine bestimmte Art und Weise zu formatieren. John hat nie versucht zu implizieren, dass es korrekter ist, nur dass es etwas ist, auf das Sie Ihre Präferenz stützen können - ansonsten ist es eine völlig willkürliche Wahl, oder?
Ryan Williams

7

Groß- oder Kleinschreibung ist "richtig". Wenn Sie jedoch Web-Schriftarten verwenden und sich für IE7 interessieren, würde ich die Verwendung <!DOCTYPE html>aufgrund eines Fehlers in IE7 empfehlen, bei dem Web-Schriftarten bei der Verwendung manchmal fehlschlagen <!doctype html>(z. B. in dieser Antwort ).

Deshalb schreibe ich den Doctype immer in Großbuchstaben.


6

Der Standard für HTML5 ist, dass Tags die Groß- und Kleinschreibung nicht berücksichtigen.

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

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

Ein DOCTYPE muss in dieser Reihenfolge aus folgenden Komponenten bestehen:

  1. Eine Zeichenfolge, bei der die Übereinstimmung zwischen Groß- und Kleinschreibung nicht berücksichtigt wird <!DOCTYPE.

35
Ich vertraue W3Schools nicht zu 100%, sie sind nicht mit dem W3C verbunden, und obwohl die meisten ihrer Informationen gut sind, sind einige nicht gut.
Joshnh

Dies ist ziemlich weithin bekannt - hier ist der Link zu w3.org
Stephen

4
W3Schools haben nicht mehr oder weniger Fehler als andere Websites. ( Völlig zufälliges Beispiel ) Nehmen Sie die Informationen mit einem Körnchen Salz, konsultieren Sie im Zweifelsfall die w3.org-Seiten, und es wird Ihnen gut gehen. Die wahren Dummköpfe sind diejenigen, die glauben, dass W3Schools eine offizielle Einrichtung ist oder dass ihre Zertifikate irgendetwas bedeuten.
Herr Lister

8
@ MrLister: Ich denke nicht, dass es fair ist, Leute als Narren zu bezeichnen, weil sie denken, dass es eine Verbindung zwischen etwas namens "W3Schools" und etwas namens "W3C" gibt. Die beiden sind in Name und Domäne ähnlich genug, um Verwirrung zu stiften, und die Annahme, dass Ersteres von Letzterem irgendwie befürwortet wird oder mit Letzterem verwandt ist. Das ist offensichtlich die Absicht von W3Schools, was einer der Gründe ist, warum sie so viele Menschen verärgern, die das Problem verstehen. Die Tatsache, dass viele ihrer Informationen ungenau sind, verstärkt das Problem (dh es könnte leicht verzeihlich sein, wenn sie tatsächlich einen angemessenen Service erbracht haben)
Bobby Jack

Der Link zu tag_doctype.aspist ungültig (404) und diese Frage bezieht sich auf die doctypeDeklaration, die kein Tag ist ... Wie auch immer, die Schlussfolgerung ist richtig: In HTML5 kann das Schlüsselwort doctypein Groß-, Klein- oder Großbuchstaben geschrieben werden.
Abel

3

Die Frage impliziert, dass es nur eine richtige Antwort gibt, bietet eine Mehrfachauswahl von zwei und fordert uns auf, eine auszuwählen. Ich würde vorschlagen, dass für HTML5 beide <!DOCTYPE html>und <!doctype html>gültig sind.

Ein HTML5-fähiger Browser würde also den Kleinbuchstaben akzeptieren und den HTML-Code ordnungsgemäß verarbeiten.

Ich habe gehört, dass Browser, die HTML5 noch nicht kennen, auch ohne Doctype versuchen werden, das HTML so gut wie möglich zu verarbeiten. Und wenn sie den Kleinbuchstaben nicht erkennen, wird der Doctype dasselbe tun. Es macht also keinen Sinn, es in Großbuchstaben zu schreiben, da diese Browser ohnehin keine HTML5-Deklarationen vollständig implementieren können.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.