Mozilla's DOCTYPE sniffing

この記事は Mozilla Japan 翻訳部門または関連グループにより過去に翻訳された文書を移行したものです。 移行元の文書。よって、英語版と内容が異なる場合や、MDN の他の記事との整合性がとれていない場合があります。

この文書は Mozilla はどのように DOCTYPE 宣言を使って Strictモード と Quirksモード を判断するが書かれています。この判断を行うコードは現在のところ nsParser.cpp の DetermineParseMode() にあります。モード判断の歴史を知るには バグ 1312バグ 55264 をご覧下さい。Mozilla 1.0 前後に作られた Almost-Standard モードについては バグ 153032 をご覧下さい。この振る舞いを選ぶようにしている目的は以下の通りです:

  • 正しく表示されるのに Quirks モードであることが必要な、ほぼ全ての既存の web の text/html ページは Quirks モードによって表示されるべきです (以下を配慮して、全てではなく ほぼ 全てのです)。
  • 現在の標準に従って記述している著者は Strict モードを呼び出せるべきです。
  • 将来登場する公開識別子を DOCTYPE 宣言で使用して書かれたページは Strict モードによって表示されるべきです。

つまり、どのページが Mozilla がウェブの重要なユーザエージェントとして知られるようになった後に書かれたものであるか判断を下すには、このアルゴリズムが最良の近似なのです。

Full Standards モード

以下の場合は Full Standards モード となります:

Almost Standards モード

以下の場合は Almost Standards モード となります。Almost Standards モードは 1.0 や 1.1appha 以降、1.01 や 1.1beta 以前に作られました。Almost Standards モードが作られるまではこれらの DOCTYPE では Full Standards モードとなっていました。

Quirks モード

以下の場合は Quirks モードとなります(こちらのリストは既存のウェブページで確実に Quirks モード となるようにするため包括的でなければならない):

このリストの準備に際して次のサイトを利用させて頂きました: W3C HTML Validator, HTMLHelp HTML Validator.

かなり多くのページが公開識別子を間違えているので、全ての公開識別子比較は大文字小文字を区別しないことに注意して下さい。(識別子は大文字小文字を区別するものであり、技術的にはこれは正しくありません)

参照

Original Document Information

 

ドキュメントのタグと貢献者

 このページの貢献者: tregagnon, ethertank, Taken, Mgjbot
 最終更新者: tregagnon,