見出し画像

HTMLの文書型宣言は軽く見られがちだけど正確に理解しておこう

HTMLを勉強すると、一番最初に出てくるのが「文書型宣言」です。

しかし、いろんな書籍などを見てもあまり詳しく説明されているものがありません。

あまり重要視されていない一番の理由は、ブラウザの表示上にあまり影響ないからでしょう。

文書型宣言によって、表面上の変化がほとんど無いのですが、どのような規則に従うかを明記している部分なので、HTML文書が適切なルールに従って記述されているか評価する際に必要になってきます。

したがって、HTML文書の記述ルールによって、文書型宣言の記述方法が変わってきます。

そこで今回は、現在でもお目にかかる可能性のある、HTML5からHTML4.01まで遡って、記述の違いを紹介していきながら、文書型宣言について詳しく説明していきたいと思います。

文書型宣言とは?

元々は、SGML言語(HTMLやXMLの元になった言語)において、DTD(構造や関係性などのルールを記述するためのスキーマ言語)を記述しておく必要がありました。

SGMLから継承されたHTMLにおいても、DTDはどのようなルールで記述するかを明記するために必要でした。

例えば、HTML4.01では以下のような記述があります。

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

これは、HTML4.01で厳密な記述ルールでHTML文書を作成するという宣言になります。

DTDファイルのURIが記述されているので、試しにアクセスしてみるとブラウザにファイルの中身が表示されます。

http://www.w3.org/TR/html4/strict.dtd

このファイルの中に、HTML文書の記述ルールが書かれているということです。

文書型宣言の実例

現在は、W3CからHTML5が勧告されてから時間が経っており、HTML5以外使う場面がほとんど無いのですが、まれに古いバージョンのHTMLやXHTMLが使われているサイトがあったり、古いシステムでは古いバージョンのHTMLやXHTMLしか使えない場面もあったりします。(楽天市場など…)

そんなこともあり、一応古いバージョンの文書型宣言も多少知っておく必要があります。

ここでは、まだ若干お目にかかる可能性がある文書型宣言をピックアップして、ご紹介していきます。

HTML4.01(厳密型)の文書型宣言

HTML4.01において、厳密な記述ルールでHTML文書を作成することを宣言している文書型宣言です。

非推奨タグの使用は禁止されています。

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

HTML4.01(移行型)の文書型宣言

HTML4.01以前のバージョンからの移行過渡期において、4.01で非推奨となったタグも許容する記述ルールによって、HTML文書を作成するという宣言になります。

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

HTML4.01(フレームセット型)の文書型宣言

HTML4.01では、非推奨となったフレームセットを旧バージョンからの移行過渡期において、使用可能とする記述ルールを宣言しています。

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

XHTML1.0(厳密型)の文書型宣言

XHTMLはアルファベットの大文字・小文字も厳密には区別します。

したがって、「DOCTYPE」の記述は必ず大文字で記述します。

XHTML1.0は、HTML4.01とほぼ同時期に利用されていたので、同様に厳密型・移行型・フレームセット型の宣言が混在しています。

こちらも非推奨タグを厳密に禁止するという宣言になります。

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”en” lang=”en”>

XHTML1.0(移行型)の文書型宣言

こちらも以前のXHTMLバージョンからの移行過渡期に対応するために、非推奨タグも許容するレベルの文書型宣言になります。

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”en” lang=”en”>

XHTML1.0(フレームセット型)の文書型宣言

こちらもHTML4.01と同様に、フレームセットの記述も許容する文書型宣言になります。

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Frameset//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”en” lang=”en”>

XHTML1.1の文書型宣言

XHTML1.1は、1.0から発展し、より厳密なルールに基づいて統一したバージョンになります。

したがって、XHTML1.1は、厳密な文書型宣言しかありません。

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN” “http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>

HTML5.xの文書型宣言

HTML5は、これまでのようなSGMLをベースに開発されたものではないため、DTDの記述は不要となりました。

したがって、HTML5以降については、スッキリした記述になっています。

<!DOCTYPE html>

まとめ

現在は、HTML5が勧告されてから時間が経っており、HTML5以外のバージョンが使われる場面は、一部の古いシステムに限られています。

HTML5は、5.2にバージョンアップされていますが、文書型宣言はそのまま上記の記述になっています。

HTML文書のコーディングには、特に意識することなく

<!DOCTYPE html>

を記述しておけば問題は無いのですが、その代わり厳密にHTML5のWeb標準にしたがったコーディングを心がけましょう!!

Twitterでは大喜利企画、ブログでは読むラジオ、リアルではWEB屋の仕事をしています。 noteでは、WEBに関するお話や大喜利ファンクラブで話している内容を少しだけ紹介しています。