Document Type Declaration: 文書型宣言

Dig*Dag さんの Firefox IE の表示の違いをまとめてみる という記事と、それに関わる一連の記事を読んでの感想。この人の書いている、記述した DTD によってブラウザの解釈方法が変わる、というのは正論で、決して間違ってはいないのですが、その DTD が何たるかをわかっているのだろうか、と疑問に思ったわけです。

DTDDOCTYPE 宣言DOCTYPE スイッチという言葉と一緒に語られることが多いのですが、DOCTYPE 宣言文書型宣言です。文字通り文書型を宣言する宣言文なのですが、その文書型を定義する情報、すなわち文書型定義のことを DTD (Document Type Definition (ドキュメント タイプ デフィニション) ) といったりします。ごくまれに文書型宣言のことを指していう場合もありますが、その場合は Document Type Declaration (ドキュメント タイプ デクラレーション) の略となります。どちらかというと一般的ではありません。

文書型定義とは HTML 文書や XHTML 文書を記述する際、文書に用いられる一連のルールなのです。 HTML 文書や XHTML 文書が定められたルールに従って書かれているかを検証するソフトなど (バリデータ) が、文書型宣言で指定された文書型定義を参照して検証するわけです。ちなみに文書型宣言内に文書型定義を記述 (内部サブセット) しても、文書型定義自体は他のファイルに記述して参照 (外部サブセット) してもよく、一般的に HTMLXHTML では W3C で用意された文章型定義を外部サブセットとして参照する方法がとられます。

文書型宣言の有無や、宣言される文書型定義の違いで、 IE などのブラウザなどでは CSS の解釈方法を変えていたりします。マイクロソフトではこれを DOCTYPE スイッチと呼んでいます。 HTML 文書では文書型宣言は必須 (XML のサブセットである XHTMLXML Schema (スキーマ) や名前空間などで拡張できるため文書型宣言は必須でないが推奨) なのですが、過去のブラウザに向けて作られた古くからある Web ページなどは文書型宣言のないものが多いため、その互換性を保つために後方互換モードなど、標準と違った解釈をする描画モードが用意されています。

さて、最初の Dig*Dag さんの記事ですが、このページでは DTD を文書型定義でなく文書型宣言として読むとしっくり来ます。