MSIE の XML サポート状況(共通事項)
注意
MSIEにおけるXMLの取扱は、外部APIであるMSXMLが受け持つことになっています。従って、インストールされているMSXMLのバージョンが異なれば、当然挙動も異なります。
ここでは、MSIEに同梱されてきたものに関して話を進めることにします。
2008年3月現在、MSIE 7.0 + MSXML 4.0 の組み合わせにおいても、同様のことが言えます。つまり、XHTMLの扱いと実装に関して言えば、殆ど進歩が無いと考えられます。
Win/Mac 共通の実装状況/不具合
- Mozilla や Opera などと異なり、外部 DTD のパージングも行います。その結果、外部 DTD に記述された実体参照の内容が XML 文書インスタンスにも反映されます。
- 文書の妥当性までは検証しません。整形式にさえなっていれば、 DTD に存在しない要素や属性を書いてもエラーとはなりません。ただし、未定義の実体参照があるとエラーになります。
- XML 宣言の前に空白文字があっても、なぜかエラーにはなりません。 Mozilla などでは確実にエラーメッセージを吐きます。
- xml バージョン宣言をチェックします。
version="1.0"
以外の記述があると、エラーになります。
html:
接頭辞でなければ、 HTML の要素と認識してくれません(名前空間 URI の中身には無頓着)。逆に言えば、この接頭辞を利用すれば、 MSIE 用の XHTML 文書を作成することが出来ます。
application/xhtml+xml
は認識しません(ファイルダウンロードのダイアログが出現する)。 XHTML として認識させるためには、 text/xml
もしくは application/xml
の MIME 型を用いなければなりません(application の定義から行けば、後者の方がベター)。
- マーク区間 <![IGNORE[ ... ]]> 内の記述もパージングします。そのため、この区間の中に未定義の実体参照が存在するとエラーとなってしまいます。この不具合は、「XHTML 1.1/Basic 準拠の文書が MSIE で表示できない」問題として有名です。
- XLink はサポートされていません。
- テーブル関聯要素の生成を CSS で行うことは出来ません (MS-XSLT では可能)。
xml-stylesheet 処理命令で CSS を適用させた場合
- いかなる文字コードを使用していても、 ISO/IEC 10646 (Unicode) 系文字セットに変換されるようです。 WinIE では、適用されるフォントが ISO/IEC 10646 (Unicode) 適用時と同じになりますし、 MacIE では、文字化けの仕方が文字コードの違いに依存しません。 XML 日本語プロファイルでは、「ISO/IEC 10646 (Unicode) 系符号化方式でないもの( Shift-JIS, euc-jp など)は、ISO/IEC 10646 (Unicode) にコード変換する」旨が記述されており、挙動としては正当なものと言えます。
- 名前空間接頭辞が存在する要素へのスタイル指定には、工夫が必要です。例えば、
h:section
要素に section{...}
と指定しても、スタイルは反映されません。 id を指定するか、子要素にユニバーサルセレクタを指定すれば反映されます。以下にその一例を示します。
- もとの XML 文書の断片
<body>
<h:section id="section1">区劃の中身</h:section>
</body>
h:section
要素に有効なスタイル指定
body * {color:red;}
#section1{background-color:blue;}
html:body
要素でなければ、背景画像の固定が出来ません。 html:a
要素でなければ、 :hover
や :active
疑似クラスなどのスタイルが適用されません。
WinIE 共通事項
- ルート要素に背景を指定しても、なぜか周囲に白い空白が残ります。ルート要素より上位に「仮想的な」要素が存在するものと思われます。
*{margin:0px; padding:0px;}
と予め記述することで、この問題は回避出来ます。
- utf-8, utf-16(be/le), iso-10646-ucs-2 いずれの文字符号化方式もサポートしています。