DOCTYPE宣言について

DOCTYPE宣言の例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
 ・
 ・
</html>

赤い文字列がDOCTYPE宣言の一例です。DOCTYPE宣言とは、文書がHTMLであり次にはじまるHTML文書(HTMLソース)がどのバージョンを利用して、どのDTD(文書型定義)に従って記述されているかを文頭に宣言することです。 この場合はHTML 4.01 バージョンを利用して、DTDの中のTransitionalに従って記述する宣言になります。 DTDでは、どのような要素や属性1が使えるのか、あらかじめ定義されていて、、 その定義された要素や属性使ってHTML文書を作成します。バージョンが違えば利用できる要素や属性などが異なります。 ブラウザはまずこれを読んで(解釈し)宣言に従って表示するようになっています。

1要素や属性とは、 例えば:<p align="right">HTMLの知識</p>と指定します。

要素説明の図

<p align="right">と</p>がタグにあたります。 alignが属性にあたります。タグに囲まれた内容を具体的にどうしたいのか付加を指定するものが属性です。 開始タグから始まり、終了タグで終わる部分を要素といいます。 この場合はp要素の内容は「HTMLの知識」となります。 p のような<>の中のものは要素名といいます。


少し、分かりにくい説明になりましたが、「DOCTYPE宣言」は、自分が作成したHTML文書が標準に従って正しく作成さていることを宣言するものです。

標準規格に従ったHTML

HTMLは世界共通のマークアップ言語(テキストの中にタグを埋め込んでいく言語)です。共通ということは、何か標準とするものがあって、それに合わせてHTMLを記述するということになります。その標準を決めているのが、 W3C(World Wide Web Consortium)という名の非営利団体です。この団体は、WWW 技術に関連する企業、大学・研究所、個人などが集り、HTMLをはじめとする様々な言語やWebに関連する技術の標準(仕様)について議論する団体です。そこで決められたHTML仕様(ルール)が、勧告として現在ホームページの標準として取り扱われてその標準に従って作成することが推奨されています。 HTML 4.01仕様では、ホームページ作成者は自分のHTML文書に、DOCTYPE宣言も記述するようにと記されています。

HTMLのバージョン

HTMLの標準規格は、HTMLの歴史とともに変化し、インターネットの普及でデザイン的なタグが求められ、段階的にバージョンアップされいます。「HTML 1」、「HTML 2.0」、「HTML 3.2」、「HTML 4.0」、「HTML 4.01」のバージョンがあります。そして「XHTML 1.1」に移行しつつあります。 現在は一般的に「HTML4.01」が一番利用されています。「HTML 4.0」からは、文書の論理構造を示す(デザイン的な要素を除いた題名、見出し、小見出し、段落、引用などを記述し文章の構造をはっきりとさせる)ことと、見た目のレイアウトなどのデザインはスタイルシートを使うことを前提にしています。文書構造の中でデザイン上使っていた要素が非推奨(廃止予定)とされ、デザインの部分はスタイルシートで指定することになります。 HTMLでは、各バージョンで使用される要素や属性などは、DTD (文書型定義) で定義されていて、DOCTYPE宣言をした場合そのDTDに従ってHTML文書を記述してホームページを作成していくことになります。

DTD (文書型定義)の種類

HTML4.01では、3種類のDTDが用意されています。DOCTYPE宣言をする場合この中から選ぶことになります。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
strict・・・厳密型DTDで、非推奨とされた要素や属性、フレームを使っていない場合の宣言。 デザインのコントロールを指定するような要素や属性はスタイルシートで指定し、HTMLの文書構造だけを記述する徹底させた宣言。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
Transitional・・・移行型DTDで、過渡的措置として厳密型DTDのすべての要素・属性に加えて、非推奨要素や属性も使った場合の宣言。デザイン部分はスタイルシートを使うように推奨されています。現在最も一般的に使われているバージョンです。フレームには使用できません。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
Frameset・・・フレーム設定型DTDで、移行型DTDのすべての要素、属性にフレーム用の内容を使用した場合の宣言。

HTML4.01バージョンで使用される要素や属性の参考ページ: 「初心者のためのホームページ作り」 HTML4.01 Reference
自分が使用している要素や属性などが確認できます。

標準規格に沿ったページの有利性

現在の主なブラウザは、W3Cの標準規格に従って表示したり、情報を得るようになっているようです。DOCTYPE宣言をし、DTDに従って要素や属性をHTML文書として記述すれば、どんな環境での閲覧でも思った通りの表示が期待できます。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
と厳密型DTDを宣言し、その仕様通りにHTML文書を作成すれば、異なるブラウザでも同じ表示ができる、自動音声読み上げ装置や点字ディスプレイでも不都合なく内容を伝えられる、検索エンジンに反映されるなど現在求められている条件を満たすことができます。


DOCTYPEによる宣言は省略してもいいのでしょうか?
答え DOCTYPE宣言しなくても各ブラウザの仕様で表示されますので、問題はありません。宣言しなくても上手く表示されていると思います。ただ、上手く表示されているというのは、自分が利用しているブラウザでのことだけかもしれません。ブラウザのシェアはInternet Explorerが95%以上だと統計にあります。が他のブラウザ(テキストベース、点字、音声など)を利用して閲覧する方もいます。正しく内容を伝えるためには、W3Cで定義された、標準規格を理解しそれに従ってHTML文書を記述し、DOCTYPE宣言するのがいいと思います。

とりあえず、<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">と記述しておけばいいと考えてしまいますが、 やはり宣言するからには、宣言通りにHTML文書を記述する必要があると思います。

2大ブラウザ(IEでもNN)には、W3Cの標準にはない独自要素があります。例えば、 <bgsound>〜</bgsound>、<marquee>〜</marquee>、 <embed>〜</embed>、<nobr>〜</nobr>、<blink>〜</blink>などです。これらの要素を使っていて、DOCTYPE宣言をするのは宣言する意味がありません。 標準規格に従って、HTML文書が記述された場合にDOCTYPE宣言をし、自信が無い場合はブラウザの仕様にまかせて、宣言をしないほうがいいのでは、と私は思っています。 DOCTYPE宣言は、W3Cからの勧告で、強制でもなく、従うべき義務もありません。全てHTML文書作成者自身が決めることです。

自分で、正しいHTMLを記述しているのかどうか知るのは難しいと思います。 Another HTML-lint gatewayでHTML文法チェックができます。

私の例で申し訳ありませんが、初めてメモ帳にタグを記述しブラウザに表示された文字や画像を見て非常に感激した記憶があります。ブラウザってすごいなぁ〜って。多少ソースの記述に間違いがあっても、ブラウザが結構上手く解釈し表示してくれます。その理由もあって、正しくHTMLを書くという意識は低いものでした。 ある程度HTMLに慣れてくると、今度は自分のブラウザでは上手く表示されていても、他の環境ではどうだろう?ということです。 要素の使い方に標準規格があり、それに従ってHTML文書を作成すればこの不安もなくなるということになります。常にDOCTYPE宣言が記述できるHTML文書に仕上げる心がけが、大切だと思っています。(標準規格の仕様とつき合わせてHTML文書を仕上げるには、少々知識と努力がいります・・・。まずは、最低でもHTMLの論理構造をはきっちりと記述するようにしましょう。)

■HOME /■知っ得コーナーへ