1. Index
  2. Memo
  3. xhtml
  4. DOCTYPEスイッチ

DOCTYPEスイッチ

  • kz
  • 2006-10-26 (木) 23:59
  • xhtml

先日公開されたFirefox2(Fx2)や、待ちに待ったWindows Internet Explorer 7(IE7)が11月にローカライズ正式版をリリースなど、ブラウザの更新が目立っていますね。ましてや、現在の2強モダンブラウザなのだからなおさらですね。

ということで、「文書型宣言によって切り替わるモード一覧表」を書いてみました。これから作成するサイトや既存のサイトがどのモードで動いているのか、知っていると幸せになれるかもしれません。

代表的なものを中心にリストにしました。過去の物は一部まとめてあります。

文書型定義によって切り替わるモード一覧表
文書型定義 Fx2 IE7 IE6 Opera9 NN7 Safari MacIE5
文書型定義なし、もしくはHTML 2.0及び3.2 互換 互換 互換 互換 互換 互換 互換
HTML 4.01 Fx2 IE7 IE6 Opera9 NN7 Safari MacIE5
HTML 4.01 Strict URLなし 標準 標準 標準 標準 標準 標準 互換
HTML 4.01 Strict URLあり 標準 標準 標準 標準 標準 標準 標準
HTML 4.01 Transitional URLなし 互換 互換 互換 互換 互換 互換 互換
HTML 4.01 Transitional URLあり 標準 標準 標準 標準 標準 標準 標準
HTML 4.01 Frameset URLなし 互換 互換 互換 互換 互換 互換 互換
HTML 4.01 Frameset URLあり 標準 標準 標準 標準 標準 標準 標準
XHTML 1.0 Fx2 IE7 IE6 Opera9 NN7 Safari MacIE5
XHTML 1.0 Strict XML宣言なし 標準 標準 標準 標準 標準 標準 標準
XHTML 1.0 Strict XML宣言あり 標準 標準 互換 標準 標準 標準 標準
XHTML 1.0 Transitional XML宣言なし 標準 標準 標準 標準 標準 標準 標準
XHTML 1.0 Transitional XML宣言あり 標準 標準 互換 標準 標準 標準 標準
XHTML 1.0 Frameset XML宣言なし 標準 標準 標準 標準 標準 標準 標準
XHTML 1.0 Frameset XML宣言あり 標準 標準 互換 標準 標準 標準 標準
XHTML 1.1 Fx2 IE7 IE6 Opera9 NN7 Safari MacIE5
XHTML 1.1 XML宣言なし 標準 標準 標準 標準 標準 標準 標準
XHTML 1.1 XML宣言あり 標準 標準 互換 標準 標準 標準 標準

さて、ここで気になるのがIE7でしょうか。
正式版は先日英語版がリリースされましたので、日本語版も英語版をローカライズしたものになると思われます。ここではIE5~6の互換モードではおなじみだったXML宣言を記述したXHTMLは後方互換モードになるいやらしいバグを、「ボックスモデル解釈のバグ」を使って検証してみたいと思います。またそれと同時に、IE7で使えるか疑問だったアンダースコアハックが使用できるのかも追ってみたいと思います。

IE6、IE7の動作チェック
文書型定義 _ハック *ハック URL SS IE6 SS IE7
HTML4.01 Strict URLなし IE6 IE6 IE7 サンプル 画像を見る(IE6) 画像を見る(IE7)
HTML4.01 Strict URLあり IE6 IE6 IE7 サンプル 画像を見る(IE6) 画像を見る(IE7)
HTML4.01 Transitional URLなし IE6 IE7 IE6 IE7 サンプル 画像を見る(IE6) 画像を見る(IE7)
HTML4.01 Transitional URLあり IE6 IE6 IE7 サンプル 画像を見る(IE6) 画像を見る(IE7)
XHTML1.0 Strict XML宣言なし IE6 IE6 IE7 サンプル 画像を見る(IE6) 画像を見る(IE7)
XHTML1.0 Strict XML宣言あり IE6 IE6 IE7 サンプル 画像を見る(IE6) 画像を見る(IE7)
XHTML1.0 Transitional XML宣言なし IE6 IE6 IE7 サンプル 画像を見る(IE6) 画像を見る(IE7)
XHTML1.0 Transitional XML宣言あり IE6 IE6 IE7 サンプル 画像を見る(IE6) 画像を見る(IE7)
XHTML1.1 Strict XML宣言なし IE6 IE6 IE7 サンプル 画像を見る(IE6) 画像を見る(IE7)
XHTML1.1 Strict XML宣言あり IE6 IE6 IE7 サンプル 画像を見る(IE6) 画像を見る(IE7)

いかがでしょうか?IE7では、XML宣言を指定してもちゃんと標準モードで描画されていますね。
また、IE7も互換モード時はアンダースコアハックに対応するみたいです。これが既存のサイトに影響してくるかどうかは、そのサイトの文書型定義に依存していきますね。
ただ、IE7のアンダースコアハックは、IE6以下に合わせて作られたコンテンツのために残しておいた物だと思います。(と、wuさんがいっていた気がします。)

*追記&修正(2006-12-20)

数ヶ月前に書いたこのエントリーですが、hxxk.jpの真琴さんの方でより詳細な一覧表とともに、このエントリーが正しいかどうか検証していただきました。

結果、このエントリー自体には間違いはなかったみたいなのですが、真琴さんの検証用サンプルでは違う結果が。公開識別子“-//W3C//DTD HTML 4.02 Transitional//EN”の「//EN」の前にスペースが入ることで標準モードに切り替ってしまう現象が起きたのです。これは盲点ですね…!

W3Cの仕様書にて公開識別子を確認したところ、スペースは入っていませんでしたので、スペースなしが正しい公開識別子になるのだと思います。Fx,IEでDOCTYPEのチェックがどのようになっているかは、以下の公式文書にて説明されております。

実際、僕も過去の作品等を見返してみたところ、スペースを含んだ間違った公開識別子が発見されましたので、とてもヒヤヒヤしております。この間違いに対する発見とともに、改めてDOCTYPEスイッチを見直すきっかけを与えてくださった真琴さんには本当に感謝いたします。ありがとうございます。

Comments: 4

nao 06-10-30 (月) 14:14

おぉ,これはいいねー.

kz 06-10-30 (月) 19:33

意外とまとめ上げるのが大変でした:-(
でも、IE6が標準モードになるか互換モードになるかを抑えておくだけでいい気もします。

真琴 06-12-19 (火) 23:18

すみません、指摘記事の方でも追記していますが、検証用のサンプルの方が間違えていました !
サンプルを作った際に、 HTML 4.01 Transitional だけ DOCTYPE 宣言中の公開識別子に空白を入れてしまっていたために標準準拠モードと解釈されたようです。お手間を取らせてしまって申し訳ありませんが、修正前の表で正解かと思われます。

お詫びにブログバトラーで挑んで返り討ちに合ってきます !

kz 06-12-20 (水) 00:34

追記部分を読み、そちらでもコメントさせていただきました。

今回のことで、よりDOCTYPEスイッチに関して学べましたし、記事の重要さについても改めて認知できました。ありがとうございます!…ということで、せっかくだから記事を修正してみました!

ブログバトラー今見に行ったのですが、僕の方が返り討ちに遭ってます!!笑

Comment Form
Remember personal info
  1. Index
  2. Memo
  3. xhtml
  4. DOCTYPEスイッチ
Blog Battler
Search
Feeds
  • Total Feed Counter
Nakanohito

Page Top