人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

DOCTYPE宣言が無くてもWebページを作成できるのに、どうしてDOCTYPE宣言が作られたのでしょうか?

私は今までホームページを作成したことはありますが、DOCTYPE宣言を知りませんでした。検索エンジンで調べても、DOCTYPE宣言が無くてもWebページを作成できるとのことです。

それなのに、DOCTYPE宣言があるのはあえて作ったと解釈してしまうのですが、果たしてDOCTYPE宣言を作った理由はいったい何でしょうか?

●質問者: 紫龍雪花。
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● パパトモ
ベストアンサー

DOCTYPE宣言は、XMLパーサーのために存在します。

XMLパーサーというのは、XMLで記述された文書を分解してデータ化するプログラムライブラリです。これを使って、HTMLを分解できるように考えられたのがXHTML文書で、DOCTYPE宣言は、文書がXHTMLで書かれている事を宣言する書式になります。

厳密に分解する必要のないHTMLでは不要で、多くのブラウザは、厳格ではないHTMLですら表示できます。しかしロボットや携帯を意識した場合、正しく表示させるためには、DOCTYPE宣言をした厳格なXHTMLで書くのが良いと言われています。

http://ja.wikipedia.org/wiki/XHTML
http://ja.wikipedia.org/wiki/XHTML_Mobile_Profile


紫龍雪花。さんのコメント
回答ありがとうございます。 よく分かりました。

パパトモさんのコメント
HTMLもXMLもマークアップ言語ですが、XMLはアプリケーション間でデータ交換を行うためのものですから、表示を意識したHTMLとは目的が違います。ちなみに、いかにいい加減なHTMLでも、ブラウザが正しく表示しているか、言い換えるならブラウザの努力を知りたければ、w3cが提供している色々なValidatorを試すと分かります。 http://validator.w3.org/ http://jigsaw.w3.org/css-validator/validator.html.ja たとえば、はてなをチェックすると、意外にエラーがあって面白いですよ。

紫龍雪花。さんのコメント
再びの回答、ありがとうございます。

紫龍雪花。さんのコメント
皆さま、回答ありがとうございました。 どなたの回答もベストアンサーにしたいのですが、それは無理ですので、最初に回答をしてくださった方の回答をベストアンサーにさせていただきました。

2 ● JULY

それには歴史がありまして...

Standard Generalized Markup Language - Wikipedia
DOCTYPE 自体は、SGML という書式で使われるものです。

で、SGML をモデルにして HTML が作られてきた、という歴史があります。
HTMLの過去・現在・未来

ただ、厳密に SGML の体裁を整えていた訳じゃなく、「なんとなく、SGML っぽい HTML」があって、それを実装しながら改良、というのが先行していて、あとから、「SGML の応用の一つ」という体裁を整えようとした、といった感じでした。

で、ブラウザ側でのこの DOCTYPE を参照して表示のモードを変える、といった使われ方になって、現在に至る、といった感じです。


紫龍雪花。さんのコメント
回答ありがとうございます。 よく分かりました。

3 ● 若葉

Web ページで使われている HTML は、 SGML という言語を参考に作られました。当時の SGML では文書の解釈 (タグや実体参照などの処理) のために DOCTYPE 宣言の情報が必要だったので、 DOCTYPE 宣言は必須とされていました。

もともとは HTML は SGML を参考にしつつも厳密には従っていなかったので、 DOCTYPE 宣言は必要ではありませんでした。当時の Web ブラウザーは DOCTYPE 宣言をコメントとみなすなどしていました。しかし HTML は SGML に従うべきという考えが主流であった1990年代に作られた HTML2 ? HTML4 は、 SGML の規定に従い、 DOCTYPE 宣言を必須としました。そのため、少しずつ DOCTYPE 宣言が使われるようになっていきました。

つまり、 HTML に DOCTYPE 宣言が取り入れられたのは HTML を SGML ベースにするためであり、 SGML に DOCTYPE 宣言があったのは、それをもとにタグなどを解釈するためです。

現在では HTML は SGML とは別の言語であるとされており、本来の意味での DOCTYPE 宣言は必要ないはずですが、それでも DOCTYPE 宣言は必須とされています。これは、2000年頃に、当時から見て古い Web ブラウザーによる HTML/CSS の解釈と、仕様上正しいとされる HTML/CSS の解釈にずれが生じており、「DOCTYPE スイッチ」によって古い Web ページと新しい Web ページを区別することにした名残りです。 DOCTYPE 宣言が無いと古いモード (奇癖モード) になってしまうので、それを防ぐために DOCTYPE 宣言は必ず書かなければならないことになっています。


紫龍雪花。さんのコメント
回答ありがとうございます。 よく分かりました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ