書かれた HTML文書が、どのバージョンで書かれたものかを宣言します。
HTML5 の文書型宣言
<!DOCTYPE html>
通常(HTML5)は、たったこれだけです。
文書が HTML5 で書かれたものであることを真っ先にブラウザに伝えなければならないので、文書の先頭(<html>タグよりも上)に記述する必要があります。これが文書型宣言(Document Type Definition、DTD、DOCTYPE宣言)です。
最低限必要な HTML での文書型宣言の位置
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>最低限必要なHTML</title>
</head>
<body>
</body>
</html>
「DTD : Document Type Definition」とは、「文書型の定義」を意味します。
HTMLや XHTMLでは、バージョンごとに使用できる要素(タグ)や属性とそれらの配置ルール等が定められていますが、文書型宣言は、その文書が HTMLや XHTMLのどのバージョンで書かれているかを宣言するためのものです。そして、宣言したからには、宣言したバージョンのルールに従って記述していかなければなりません。
HTMLは SGML(Standard Generalized Markup Language)にもとづいて作られた言語であり、DOCTYPE宣言や DTDは SGMLに由来するものです。
多くの Webブラウザは DOCTYPE宣言の有無やその内容に応じて、標準モード、おおむね標準準拠モード、互換モードといった異なる方法で文書を表示します。この DOCTYPEによる表示方法の切り替えは DOCTYPEスイッチと呼ばれています。
HTML4.01や XHTML1.0のような旧来の HTMLでは、1行目に非常に長い文書型宣言を記述しなければなりませんでした。恐らく、すべての文書型宣言のフォーマットを記憶している人はほとんどいないと思います。これまでページを作成する際には、ほとんどの方がこの長い文書型宣言を記述してきたのではないでしょうか。
HTML 4.01 Strict
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
HTML 4.01 Transitional
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
HTML 4.01 Frameset
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
XHTML 1.0 Strict
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XHTML 1.0 Transitional
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
XHTML 1.0 Frameset
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
HTML3.2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
Compact HTML 1.0(i-mode)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD Compact HTML 1.0 Draft//EN">
HTML5 では、シンプルに書けるように変更されました。
<!DOCTYPE html>
たったこれだけです。
HTMLシリアライゼーションにおいては、大文字と小文字は区別されませんので、すべて大文字で記述しても構いませんし、すべて小文字で記述しても構いません。
ただし、XML(XHTML)シリアライゼーションでは、大文字と小文字は区別されますので、上記の通りとしなければいけません。
すでに HTML5でマークアップしたサイトが数多く登場していますが、HTML5でなくても、大文字と小文字については、前述の例の通りとしている場合が多いようです。
HTML4.01や XHTML1.0で作られた HTMLの文書型宣言を、上記の HTML5の文書型宣言に書き換えるだけで、多くの場合は、一応、HTML5に準拠したページとなります。
HTML5からのHTMLは、SGMLにもとづいた言語ではなくなりました。そのため HTML4までとは違って、DTDの指定が必要ありません。ただし DOCTYPE宣言自体は、DOCTYPEスイッチによってブラウザを標準モードで動作させるため、HTML5でも必要とされています。
DOCTYPE宣言が無いと、一般的なブラウザではレンダリングモードが互換モード(Quirks mode)となります。互換モードのブラウザでは CSSの解釈が標準と異なるため、製作者の意図しないレイアウトになってしまう場合があります。ブラウザに標準モード(Standerds mode)で解釈させる場合には、DOCTYPE宣言を記述する必要があります。
HTML5で文書型宣言を入れる目的は、旧来の HTMLで指定してきた文書型宣言の目的とは全く異なります。旧来の文書型宣言は、文字通り、文書の型を正確に伝えるものでした。しかし HTML5の文書型宣言は、主に次の点を目的に、新たに考案されました。