このページの目次
HTMLのバージョンについて
HTMLにはその歴史とともにいくつかのバージョンがあり、そのバージョンによって要素や属性、記述のルールなどが異なっています。HTMLは、要素や属性の追加・廃止だけでなく、意味や役割が変更されるなどして新しい仕様が加えられ、現在もバージョンアップが続けられています。

最新のHTMLバージョンについて
現在のHTML最新バージョンは「HTML Living Standard」です。2021年1月28日にHTML5が廃止になり、名称もHTML Living Standardに変更され、 HTML の標準仕様となっています。
HTML5は「W3C」という機関が標準化を進めていましたが、W3Cとは別に、Apple、Mozilla、Operaによって設立された「WHATWG」という団体が独自に策定を進めているHTML仕様が「HTML Living Standard」です。HTMLのバージョンは「W3CのHTML5」と「WHATWGのHTML Living Standard」の2つの仕様がて併存する状態だったことになります。
しかし、2019年5月に2つの組織が協力体制を整え、WHATWGが作ってきたHTML Living Standardが標準として勧告されることになり、現在ではW3C による HTML の仕様策定は中止され、HTML Living Standard が HTML の標準仕様となっています。
HTML Living Standardはバージョン番号や何年何月何日版という概念はなく、日々改定が進められ、今後仕様が更新された場合でも、新しいバージョンとしてではなく、HTML Living Standardの名称のまま仕様が更新されていくようです。
Note
W3CはWeb技術の標準化を目的とした非営利団体。1994年10月1日にHTMLを開発したティム・バーナーズ=リー氏ニトリ創設された。Webで使用される各種技術の標準化を目的として設立された標準化団体、非営利団体です。
Note
WHATWG(Web Hypertext Application Technology Working Group) とはウェブ標準の保守や開発を行うためのコミュニティでAppleやMozilla、Opera Softwareらがメンバーにより設立されました。
HTML Living Standardより以前に使用されていたHTMLのバージョンには次の3つがあります。
| バージョン | 概要 |
|---|---|
| HTML4.01 | 1999年12月24日に勧告。視覚表現のための要素や属性を非推奨(視覚表現はCSSで行うこと)として、文章構造のみを記述するために定義し直されたバージョンです。 |
| XHTML1.0 | 2000年1月26日に勧告。XMLという別の言語の仕様に従って定義し直したバージョンです。タグの記述ルールがより厳格になっています。 |
| HTML5 | 2014年10月28日に勧告。Webアプリケーションを開発するための様々な仕様が盛り込まれました。 |
DOCTYPE宣言とは
現在でも複数のバージョンのHTMLが使われており、ブラウザがHTMLを正しく解釈して表示させるためにはどのバージョンの仕様(ルール)に基づいて書かれているかブラウザに伝える必要があります。ですので、HTMLファイルの冒頭(<html>タグより前)でどのバージョンの仕様に基づいて記述されているかを宣言する必要があるのです。それが「DOCTYPE宣言(文章型宣言)」です。
DOCTYPE宣言の中身は「DTD(Document Type Definition:文書型定義)」といわれるファイルを指定するものです。DTDは、HTMLのバージョン毎に、そのバージョンでの要素、その順序(親子関係)、指定できる属性などなどの情報が記述されているファイルのことで、W3CのWebサイト内にあります。
3種類のDTD
HTML5より前のバージョンのDOCTYPE宣言では同じバージョンでも3種類のDTDがあます。DTDの種類によってDOCTYPE宣言の記述が異なります。DTDには、Strict、Transitional、Framesetの3種類があります。
| 種類 | 意味 |
|---|---|
| Strict | 文法が厳密なDTDで、 非推奨としている要素や属性、またフレームを使用することができません。 |
| Transitional | 文法があまいDTDで、非推奨の要素や属性も使えますが、フレームは使えません。 |
| Frameset | 非推奨の要素や属性に加えてフレームも使用できます。 |
Strict DTD(厳密型DTD)
W3Cが非推奨とする要素や属性は使用できず、要素の配置にも厳密なルールがあります。また、 フレーム機能は使えません。
HTML4.01 Strict型のDOCTYPE宣言は下記のようになります。
HTML4.01 Strict型のDOCTYPE宣言
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
XHTML 1.0 Strict型のDOCTYPE宣言は下記のようになります。
XHTML 1.0 Strict型のDOCTYPE宣言
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
DTransitional DTD(移行型DTD)
W3Cが非推奨とする要素や属性も使えますが、フレーム機能は使えません。古いバージョンのHTMLからの移行を行いやすくするためのDTDです。
HTML4.01 Transitional型のDOCTYPE宣言は下記のようになります。
HTML4.01 Transitional型のDOCTYPE宣言
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
XHTML 1.0 Transitional型のDOCTYPE宣言は下記のようになります。
XHTML 1.0 Transitional型のDOCTYPE宣言
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Frameset DTD(フレーム設定型DTD)
Transitional DTDと同様にW3Cが非推奨とする要素や属性が使用でき、フレームも使えます。
HTML4.01 Frameset型のDOCTYPE宣言は下記のようになります。
HTML4.01 Frameset型のDOCTYPE宣言
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
XHTML 1.0 Frameset型のDOCTYPE宣言は下記のようになります。
XHTML 1.0 Frameset型のDOCTYPE宣言
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
HTML5以降ののDOCTYPE宣言
HTML5より以前のHTMLでは、どのバージョンの仕様に基づいて記述されているかをDOCTYPE宣言で指定する必要がありましたが、実はHTML5以降のバージョンでは、DTDが存在しません。そのため文書型宣言によるDTDへの参照は不要になりました。ですが、それとは別にDOCTYPE宣言を記述しておかなければならない理由があります。
ほとんどのブラウザが、DOCTYPE宣言をブラウザの表示モード(レンダリングモード)を切り替えるためにも使っています。DOCTYPE宣言があれば、「標準モード」で表示し、DOCTYPE宣言がなければ、「互換モード」で表示するというものです。
標準モードと互換モード
現在のWebブラウザの多くはCSS標準に基づいてページを表示するするようになっています。標準モードというのは、このCSSの標準に準拠して表示するモードのことをいいます。
一方、互換モードというのは古いWebブラウザの独自仕様(HTMLで視覚的な表現もおこなっていた時代のWebブラウザ)に合わせた表示をするためのモードです。このモードではCSSの解釈が標準のものと異なるため、正しく表示されずレイアウトが崩れてしまう可能性があります。
HTML5以降のバージョンでもDOCTYPE宣言を行なわなければ、互換モードで表示されてしまいます。HTML5でのDOCTYPE宣言はブラウザの表示モードを標準モードで表示させるために必要になります。互換モードで表示させない為にも、DOCTYPE宣言は必ず記述するようにしましょう。
DTDファイルの指定が必要ないので、HTML5以降ののDOCTYPE宣言は下記のようになります。
HTML5のDOCTYPE宣言
<!DOCTYPE html>
Note
現在の最新バージョンのであるHTML Living Standardでも、ブラウザ表示モードのためにDOCTYPE宣言は必要です。