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


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

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

回答の条件
  • 1人1回まで
  • 登録:2012/06/11 13:58:12
  • 終了:2012/06/12 23:14:55

ベストアンサー

id:papa-tomo No.1

パパトモ回答回数361ベストアンサー獲得回数1072012/06/11 14:20:35

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

他2件のコメントを見る
id:haruhichan

再びの回答、ありがとうございます。

2012/06/11 16:11:19
id:haruhichan

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

2012/06/12 23:16:51

その他の回答(2件)

id:papa-tomo No.1

パパトモ回答回数361ベストアンサー獲得回数1072012/06/11 14:20:35ここでベストアンサー

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

他2件のコメントを見る
id:haruhichan

再びの回答、ありがとうございます。

2012/06/11 16:11:19
id:haruhichan

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

2012/06/12 23:16:51
id:JULY No.2

JULY回答回数966ベストアンサー獲得回数2472012/06/11 14:22:48

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

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

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

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

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

id:haruhichan

回答ありがとうございます。
よく分かりました。

2012/06/11 14:34:17
id:wakabatan No.3

若葉回答回数5ベストアンサー獲得回数32012/06/11 14:31:38

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 宣言は必ず書かなければならないことになっています。

id:haruhichan

回答ありがとうございます。
よく分かりました。

2012/06/11 14:35:09

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません