IE6 に XHTML を XML として扱わせました

ついこの間 IE6 は XHTML を XML として扱えませんでした という記事を書いたばかりで恐縮なのですが、 IEXML は読めるので、というか IE の搭載する MSXML というパーサー (XML を解釈する仕組み) は外部サブセットの DTD (文書型定義) の内容を読みに行ったり、なかなかに強力なのです。というわけで、IE にはapplication/*+xml の形式を解釈する UA には application/xml として送り出してやることにしました。これなら XHTML の仕様にも適合します。text/html とはおさらばです。

IE で見てくれている人には申し訳ないのですが、ちょっと表示に時間がかかってしまいます。これは XML 文書を MSXMLDTD を読み込んでから解析し、 XSLT を通して画面に表示しているからなのです。他のブラウザ (Firefox や Opera など) ならいちいち DTD を検証しないんですけどね。

実は、文書型宣言でややこしいことをしています。公開識別子が XHTML 1.1 のものなのに、システム識別子が XHTML 1.0 Strict のものだったりします。なのに、堂々と ruby 要素を使っています。だって 1.1 の DTD はモジュール化されていて、読み込みに時間がかかるんですもん……。というか 1.0 の DTD がそのまま通っちゃうことに驚き。1.1 の DTD はちょっと問題あるような感じで……と思うなら自分で DTD を書き直せばいいんですよね。いつか、時間があればやってみようかしら。

まあ、何はともあれ、よほど古いブラウザを使っていなければ text/html に出くわすことはないと思います。一応、text/html として表示される確認済みのブラウザを挙げておくと、影鷹Netscape Navigator 4.x、そんなところです。