Internet Explorer 5.0が登場した時、「これでXML文書をWebブラウザに表示できるようになった。」と言われました。ところが、Internet
Explorerと、付属のMSXML(Microsoft XMLパーサ)の関係がややこしく、いろいろ誤解が生じています。名前空間http://www.w3.org/TR/WD-xslとhttp://www.w3.org/1999/XSL/Transformの問題もここに起因します。
そこで、Internet ExplorerとMSXMLについてまとめてみました。
MSXMLについて
Internet Explorer 5以降でXMLを処理できるのは、Internet ExplorerにMSXMLが付属しているからです。Internet
Explorer 4.0にすでにMSXML 1.0が含まれていたのですが、簡単にXML文書を表示できるようになったのはInternet Explorer 5.0+MSXML
2.0からです。
MSXMLは、Internet Explorerとは別にバージョンアップを続けています。最新のInternet Explorerをインストールすると、自動的に最新のMSXMLがインストールされる訳ではありません。
MSXMLのバージョンによって、XMLやXSLへの対応状況が大きく異なりますので、ご注意ください。
MSXMLの最新バージョンは、2001年4月にリリースされたVer.4.0 テクノロジープレビューで、XML Schemaの勧告案に対応しています。
| MSXMLのバージョン |
ファイル名 |
付属している製品 |
| 1.0 |
msxml.dll |
Internet Explorer 4.0 |
| 2.0 |
msxml.dll |
Internet Explorer 5.0 |
| 2.5 |
msxml.dll |
Internet Explorer 5.01 |
| 2.5 SP1 |
msxml.dll |
Internet Explorer 5.5 |
| 3.0 |
msxml3.dll |
Internet Explorer 6.0
|
| 4.0 |
msxml4.dll、
msxml4a.dll、
msxml4r.dll
|
Microsoftのサイトかダウンロード |
MSXML 2.xと3.0以降の違い
Internet Explorer 5.xに付属のMSXML 2.xと、Internet Explorer 6.0に付属の3.0以降はかなり異なります。最も大きな違いの1つがXSLへの対応です。
Internet ExplorerにXML文書を表示するとき、多くの場合XSLを使用します。XSL(Extensible Style
Language)の役割はXMLの文書構造を変換するTransformationの機能と、文書の外観など(音声なども含む)を整えるFormatting
Objectsの機能に分かれます。この2つは最初はW3CのXSLワーキングドラフトの中に一緒に入っていたのですが、変換に関する部分のみが抜き出され、XSLT(XSL
Transformations)として勧告になりました。残されたFormatting Objectsの方はXSLとして、現在は勧告候補の段階にあります。
MSXML 3.0以降は、このXSLTの勧告に基づいて開発されています。一方、古いMSXML 2.xは、まだXSLTが分離される前、TransformationとFormatting
Objectsが一緒に論じられていたころのXSLの1998年12月18日付のワーキングドラフト中のTransformationの部分に基づいて開発されています。
| 以前のXSLワーキングドラフト |
− |
Transformation(*1)
|
→ |
XSLT(勧告)(*2) |
| |
− |
Formatting Objects |
→ |
XSL(勧告候補) |
- MSXML 2.xは「XSL対応」と言われているのですが、ここでの「XSL」は現在勧告候補の「XSL」でなくて、以前のXSLワーキングドラフトのTransformation(*1)の部分です。それがいろいろ変更されて勧告となったXSLT(*2)のかなりの部分を実装したのが、MSXML
3.0です。XSLのFormatting Objectsの部分には、MSXML 2.xもMSXML 3.0以降も対応していません。(では、Formattingが担当するはずのXMLの外観の部分は今どうしているのかというと、HTMLと同じCSSを使うか、XSL(T)でXMLをHTMLに変換し、HTMLの要素や属性で指定しています。)
- MSXML 2.xの「XSL」スタイルシートとMSXML 3.0以降のXSLTスタイルシートでは、名前空間が異なります。(その他いろいろ異なりますが、一番目立つのは名前空間の違いです。)
MSXML 2.x: http://www.w3.org/TR/WD-xsl
→1998年12月18日付XSLワーキングドラフトで指定されている名前空間
MSXML 3.0以降: http://www.w3.org/1999/XSL/Transform
→XSLT 1.0勧告で指定されている名前空間
したがって、<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform>と記述したスタイルシートを適用したXML文書は、(MSXML
3.0以降をインストールしていない)Internet Explorer 5.xでは表示できません。このため、Internet Explorer 5.xでXSLTを使用するには、MSXML
3.0以降をインストールする必要があります。Internet Explorer 6.0にはMSXML 3.0が付属しているため、特に何もインストールしないでもXSLTを使用できます。
MSXML 3.0への切り替え
MSXML 3.0をダウンロードしてインストールしても、以前のバージョンのMSXMLには上書きされません。
各バージョンのdllが共存し、必要に応じて切り替えて使用することができます。Internet ExplorerでMSXML
3.0を使用するためには、Microsoftのダウンロードセンターからxmlinstをダウンロードし、以下の方法でMSXML
3.0に切り替える必要があります。
- MS-DOSプロンプトを表示し、WindowsのSystem(32)フォルダに移動します。
- 以下のように入力し、[Enter]キーを押します。
xmlinst
古いレジストリの値が削除されます。
- 以下のように入力し、 [Enter]キーを押します。
regsvr32 msxml3.dll
MXSML 3.0がレジストリに登録されます。
上記の操作を行わないと、MSXML 3.0をインストールしたつもりでも、Internet ExplorerではMSXML 2.xを使い続けることになります。
関連情報
置換モードによる
Msxml3.dll インストール
- xmlinstでのMSXMLのバージョンの切り替え方法や、MSXMLの詳細なバージョン、GUID、ProgIDなどについて掲載されています。
MSDN
Online Tools - XSL to XSLT Converter
- XSLスタイルシートからXSLTスタイルシートへのコンバータがダウンロードできる他、両者の違いについても記述されています。
VBXML XSLT reference
(英語)
- MSXMLのバージョンごとのXSL(T)への対応状況の一覧が掲載されています。
Unofficial
MSXML XSLT FAQ (英語)
|