HTMLのバージョンを示す

HTML

HTML入門

HTMLのバージョンの示し方

/*HTMLのバージョンを示す記述*/
<!DOCTYPE html>

HTML文書の先頭に記入して、これ以降の内容がHTMLのどのバージョンの決まりに従って書かれているのかを示します。

HTMLには、HTML5.1、HTML4.01、XHTML1.0などの異なるバージョンがあり、HTML4.01とXHTML1.0の場合はさらに「Strict」「Transitional」「Frameset」という3つの種類に分かれています。

使用するバージョンや種類によって決まった書き方があるので、そのまま文書の先頭に記述します。HTML5.1の場合は、次のサンプル(1行目)のように記述します。

<!DOCTYPE html> /*←これだけ*/
<html lang="ja">
・・・
</html>

なお、<!DOCTYPE ~>はタグのように見えますが、正式にはタグではなく「DOCTYPE宣言」または「文書型宣言」と呼ばれるものです。

HTML5でのDOCTYPE宣言の実際の用途について

HTML5よりも前のHTMLはSGMLという言語を使って作成され、またXHTMLはXMLという言語を使って作成されていたそうです。このSGMLやXMLといった言語では、DOCTYPE宣言は文法的に必須でした。

ところで、DOCTYPE宣言はブラウザによって別の用途にも使用されていました。本来のバージョンを示すための用途ではない使われ方です。

たとえば、昔のページのほとんどはWeb標準に準拠しておらず、DOCTYPE宣言などを記述していませんでした。ですから、DOCTYPE宣言の有無、またはその書き方の違いによって、Web標準に準拠したページかどうかを判定するのに使われました。

そして、その判定をもとにそれぞれが上手く表示できるようにブラウザの表示モードを自動的に切り替えていました。

それに対して、HTML5以降のHTMLは、SGMLやXMLといった言語で使用していない独自の仕様なので、DOCTYPE宣言を必須としません。

必須としないのでDOCTYPE宣言がなくても良さそうですが、DOCTYPE宣言をなくしてしまうと、ブラウザが昔のページと誤認識し、その結果、古いページで表示してしまいます。

HTML5以降ではDOCTYPE宣言が必須ではないとはいえ、ブラウザが古いページとして表示することを避けるために使っている形式的なものです。ですから、従来のDOCTYPE宣言に比べてとても簡単で短い記述になっています。

HTML5より前のDOCTYPE宣言

比較のために、HTML5より前のDOCTYPE宣言を調べてみました。見やすさのために改行を入れましたが、一行で記述しても構いません。

また、HTML4.0では、2行目のURLの部分("http://~.dtd")を省略できますが、XHTML1.0では省略できません。HTML5以降のDOCTYPE宣言がとても簡潔だと分かります。

HTML4.01 Strict

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

HTML4.01 Transitional

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

HTML4.01 Frameset

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

XHTML1.0 Strict

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/html1/DTD/xhtml1-strict.dtd">

XHTML1.0 Transitional

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/html1/DTD/xhtml1-transitional.dtd">

XHTML1.0 Frameset

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/html1/DTD/xhtml1-frameset.dtd">
メモ

HTML5以降ではDOCTYPE宣言が必須ではないが習慣的なものなので、ブラウザのためにもきちんと記述しておく。

HTMLバージョン

Posted by kiri