2008-03-02

Bloggerで修正できない部分

このブログのテンプレートを修正して、だいぶvalidなXHTMLに近づけた。何しろ最初はひどかった。まず一つ一つの投稿をp要素で勝手に囲うし、id属性が重複している部分まであったのだ。修正した甲斐があって、だいぶエラーが少なくなった。

修正できない所もいくつかある。
まず、sytle要素の中身を、コメント、<!---->で囲むことだ。これは確かに、validなXHTMLではあるが、意図した結果は生み出さない。というのも、XMLでは、コメントの内側は、パースする段階で取り除かれるからだ。つまり、スタイルシートはコメントとみなされてしまい、適用されない。正しくは、CDATAを使う。これはBlogger側で生成しているので、テンプレートでは修正できない。
あるid属性を、動的に生成しているようだが、この値が、数字から始まっている。しかし、id属性の値は文字から始めなければならない。これはテンプレートで変更できない。
ほかにも、「&」、つまりアンパサンドをそのまま出力している。これは文字実体、「&amp;」を使わなければならない。こうして記述している時にも、&amp;amp;と記述している。また、これを記述するにも、&amp;amp;amp;と、記述し、さらにまたこれを――以下無限ループ。
そしてなによりも、XHTMLなのにもかかわらず、MIMEのcontent typeが、text/htmlだということだ。最初から用意されているテンプレートもXHTML 1.0 Transitional(application/xhtml+xml推奨、text/htmlはMAY)を使っているにもかかわらず、サーバはtext/htmlを返す。もちろん、納得できる理由もある。IEがapplication/xhtml+xmlに対応していないからだ。Bloggerはもちろん、私のような理想主義者ではないので、現状の主要なブラウザに対応しなければならない。IEで見れないブログに何の意味があるというのか。

ちなみに、IEがいまだにapplication/xhtml+xmlに対応していないのにも、理由がある。IEはまだ、XHTMLに完全に対応していないからだ。
IEは後方互換性の高い、奇妙なHTMLを、なんとしてでも解釈するパーサを使っている。今の状態で、XHTML、すなわちapplication/xhtml+xmlを公式に受け入れてしまうと、後にひどい互換性の問題を引き起こすからだ。
IEの普及度は高い。いくらプログラマが、Firefoxのシェアが4割に達したと主張しても、それはプログラマの間だけの話だ。現実の一般ピーポーは、相変わらずIEを使っている。そのIEが、何でも許容するパーサを持って、XHTML対応してしまったのでは、文法違反のXHTMLが世にはびこることになる。MSの、IEチームは、XHTMLに、長期的な意味で成功してもらいたいがために、いまだにapplication/xhtml+xmlに対応していないらしい。
IE7の何を改善させたかというと、CSSを規格準拠させることに、全力を注いだらしい。CSS2.0には、だいぶ対応したらしいが、CSS2.1の、white-spaceプロパティのpre-wrapに、早く対応してほしいものだ。
参考:The <?xml> prolog, strict mode, and XHTML in IE

No comments: