大文字または小文字のDoctype?


182

HTML5 doctypeを書くとき、正しい方法は何ですか?

<!DOCTYPE html>

または

<!doctype html>

通常は最初の1つになりますが、どれでも使用できます<!DOCTYPE html>
Shadow

自分の質問になんとか答えることができましたが、他の人が同じような考えを持っている場合に備えて、私はそれを残しておくと思いました。個人的には小文字を好みます。HTML5では、大文字以外は何もありません。
joshnh 2011

11
Google.comは小文字を使用<!doctype html>
Leo Galleguillos 2014年

3
@HelloWorld:小文字の方が一般的であるため、小文字の方が圧縮率が高いためです。1日に数百万のヒットが発生するサイトの場合、これは違いを生む可能性があります。
Zaz

SVGファイルについてはどうですか?
William Entriken

回答:


183

HTMLでは、DOCTYPEは大文字と小文字を区別しません。次のDOCTYPEはすべて有効です。

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

XMLシリアル化(XHTMLなど)では、DOCTYPEは必要ありませんが、使用する場合DOCTYPEは大文字にする必要があります。

<!DOCTYPE html>

HTML5の別名、「XHTML5」のXMLシリアル化を参照してください。

DOCTYPEXHTMLドキュメントで大文字を使用しない場合、XMLパーサーは構文エラーを返します。

2番目の部分は小文字(html)、大文字(HTML)、または大/ 小文字混合(hTmL)でも記述できますが、引き続き機能します。ただし、HTML互換XHTMLドキュメントポリグロットマークアップガイドラインに準拠するには、小文字で記述する必要があります。


9
いいえ、これは誤りです。SGMLでは、ドキュメントタイプ宣言はプロダクション110、XMLではプロダクション28です。どちらの場合も、固定文字列「DOCTYPE」として宣言されます(これはタグではなく、キーワードです)。したがって、それぞれのSGMLおよびXML標準の標準的な定義では、常に大文字です。小文字の「doctype」を許可するソフトウェアを見つけた場合、そのソフトウェアは標準に準拠していません。ブラウザーは「受け入れるものに寛大」であるように設計されていますが、準拠XMLプロセッサーはこれを検証エラーとしてフラグする必要があります。
古里一郎

5
...そして、X / HTML5もこれに関して正しくないことを指摘しておきます。指定されたように、XHTML5は単に有効なXMLマークアップではありません。X / HTML5仕様には多数のエラーがあります。あまり真剣に受け止めていません。彼らが「ポリグロットマークアップ」(完全に新しい概念)を作成しなければならなかったという事実は、彼らが穴を開けたことを明確に述べています。
古里一郎

20
@Ichiro SGMLではなくHTMLについて話している。SGMLを実装したブラウザーはありません。そうした場合、<title/foo/と同等になり<title>foo</title>ます。SGMLを使用するHTML バリデーターはごくわずかです。:HTML5仕様は、この明確にする最初のものであるwhatwg.org/specs/web-apps/current-work/multipage/...
マティアスBynens

2
@ TestSubject528491その段落は、DOCTYPE(html)の2番目の部分についてです。完全な文は次のとおりです。「2番目の部分は小文字(html)、大文字(HTML)、または大/ 小文字混合()で書くことができますhTmL—引き続き機能します。ただし、HTML互換XHTMLドキュメントのポリグロットマークアップガイドラインに準拠するには、小文字で記述する必要があります。」
Mathias Bynens、2012

15
@IchiroFurusato HTML5読んでみてください。引用:「しかし、以前のバージョンのHTMLとは異なり、HTML [5]シリアライゼーションはSGMLのアプリケーションと見なされなくなり、代わりに独自の構文を定義しています。構文はSGMLに触発されていますが、特にエラー処理に関して、ブラウザが実際にHTMLを実際に処理する方法に非常に似た方法で定義されています。
Mathias Bynens 2012年

40

2014年もまだ疑問に思っている方は、こちらをご覧ください。

HTML5

W3 HTML5仕様-Doctype

DOCTYPEは、次のコンポーネントで構成されている必要があります。

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

注:すべて大文字で表示されているにもかかわらず、仕様では区別されない

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

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.

XML仕様を見ると、大文字でDOCTYPEがリストされていますが、「すべて大文字」が必要であることを示すものは何も見つかりません(比較のため、上記のHTML5仕様では、すべて大文字で例に表示されていますが、仕様では、大文字と小文字区別されないことが明示されています)。

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

ポリグロットマークアップ

W3ポリグロットマークアップ-はじめに

整形式のXMLドキュメントでもあるHTML5ドキュメントを提供できると便利な場合があります。

W3ポリグロットマークアップ-Doctype

ポリグロットマークアップは、[HTML5]のセクション8.1.1で指定されたドキュメントタイプ宣言(DOCTYPE)を使用します。さらに、DOCTYPEは次の規則に準拠しています。

* The string DOCTYPE is in uppercase letters.

したがって、Ployglot Markupは通常のHTML5 doctypeを使用しますが、追加/変更があることに注意してください。私たちの議論では、最も注目すべきは、DOCTYPE がすべて大文字で宣言されていることです。

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

総和

W3のHTMLとXHTMLのセクションを見る

[オピニオン]特に考慮を払わない限り、XMLコンプライアンスの満足についてはあまり心配しません。ほとんどのクライアントおよびJSベースのサーバー開発では、XMLに代わってJSONが使用されています。

したがって、既存のxhtml / xmlベースのレガシーシステムを新しいHTML5機能と共存させるように更新しようとしている場合にのみ、これが実際に適用されることがわかります。この場合は、ポリグロットマークアップの仕様を調べてください。


18

最新の仕様によると、の大文字と小文字を区別しないものを使用する必要があります<!DOCTYPE html>。したがって、ブラウザはどのようなケースでもサポートする必要がありますが、これ<!DOCTYPE html>が正規のケースであると推測することは妥当です。


3
仕様では、doctypeには「<!DOCTYPE」と同等の大文字と小文字を区別しない文字列が含まれている必要があることを明確に示しているため、「<!dOcTyPe」も同じです。
joshnh 2012

6
すでに述べたように、仕様ではブラウザーがすべてのケースをサポートする必要があるため、どのケースでも機能します。しかし、質問者は標準的な標準形式を明確に探しているため、どちらか一方を選択する強い理由がない場合は、仕様のサンプルケースを使用することもできます...
John Mellor

9
仕様では一貫してと<!DOCTYPE html>記述しているため、仕様の作成者は特定の大文字の使用をわずかに優先していると推測するのが妥当です。これらが一貫しているのは良いので、仕様と同じ大文字を使用しますが、必要に応じて、<!dOcTyPe私のゲストになることもできます:)
John Mellor

3
@joshnh私はあなたの混乱を理解していません。1)DOCTYPE宣言では大文字と小文字を区別しない必要があります。2)HTML5仕様の例では、大文字の「DOCTYPE html」を使用しています。この答えのすべてが言っているように思われるのは、たとえすべてが有効であっても、1つの大文字表記は文献と一致しているということです。なぜそんなに法外なのですか?

2
@joshnhはジョンが言っていたことを誤解していたと思います。FWIW、私はJohnの意見に同意します。特定の方法でフォーマットする特別な理由がない場合は、仕様がブラウザにチェックするように要求することと一致することが望ましいと同意します。ジョンは、それがより正確であることを暗示するつもりはありませんでした。それは、それがあなたの好みの基礎となるものであることだけです。それ以外の場合、それは完全に恣意的な選択ですよね?
Ryan Williams

7

大文字でも小文字でも「正しい」。ただし、Webフォントを使用<!DOCTYPE html>していてIE7に関心がある場合は、使用するとWebフォントが失敗することがあるIE7のバグのために使用することをお勧めします<!doctype html>この回答の場合など)。

これが、Doctypeを常に大文字にする理由です。


6

HTML5の標準では、タグは大文字と小文字を区別しません。

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

より技術的に:(http://www.w3.org/TR/html5/syntax.html

DOCTYPEは、次のコンポーネントで構成されている必要があります。

  1. 大文字と小文字を区別しないASCIIの文字列と一致する文字列<!DOCTYPE

35
私はW3SchoolsがW3Cと提携していないことを100%信頼していません。彼らの情報のほとんどは良いですが、そうでないものもあります。
joshnh

これはかなり広く知られています-ここにw3.orgのリンクがあります:w3.org/TR/html5/syntax.html
Stephen

4
W3Schoolのエラーは、他のWebサイトよりも多かれ少なかれありません。(完全にランダムな例)情報を細かく調べ、疑問がある場合はw3.orgのページを参照してください。問題はありません。本当の愚か者とは、W3Schoolsが公式の機関である、または彼らの証明書が何かを意味すると信じている人です。
リスター氏、

8
@MrLister:「W3Schools」という名前と「W3C」という名前の間にリンクがあると思うので、人々をばかだと呼ぶのは公平ではないと思います。2つは名前とドメインが十分に類似しており、混乱を引き起こします。前者は後者によって何らかの形で支持されているか、後者に関連しているという仮定です。それは明らかにW3Schoolsの意図であり、それが彼らが問題を理解する多くの人々を怒らせる理由の1つです。彼らの多くの情報が不正確であるという事実は問題を悪化させます(つまり、彼らが実際に合理的なサービスを提供した場合、それはわずかに許されるかもしれません)
ボビージャック

へのリンクtag_doctype.aspが無効(404)であり、この質問はdoctype宣言ではありませんが、タグではありませんdoctype
アベル

3

質問の種類は、正解が1つしかないことを意味し、2つの複数の選択肢を提供し、1つを選択するように求めます。HTML5との両方<!DOCTYPE html><!doctype html>有効であることをお勧めします。

したがって、HTML5対応のブラウザは小文字を受け入れ、htmlを適切に処理します。

HTML5の前と後のブラウザーは、Doctypeがなくても、可能な限りHTMLを処理しようとすると聞いています。また、小文字のdoctypeを認識しない場合も同様です。したがって、これらのブラウザーはいずれにしてもHTML5宣言を完全に実装することができないため、大文字にしても意味がありません。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.