MSXML

MSXML

[11] MSXML は、 Microsoft による XML の実装です。

[12] かつては IEXML の処理に用いていました。

[13] その他色々な Windows アプリケーションXML を処理するために使っていました。

実装

[2]

<!ATTLIST foo xmlns CDATA #FIXED "http://foo.example/">

なんてやると、名前空間の既定属性宣言は対応していないとか言って処理してくれない、 というのは有名な話。 こりゃ XML/XML 名前空間適合は名乗れないな。 (名無しさん)

[3]

<!ENTITY foo "foo:bar/">

のようにすると、接頭辞 foo が宣言されていないと言われる。 これも MSXML が実体置換文を文書実現値より先に処理しているのが原因。 やっぱり不適合だ。 (名無しさん)

[4] >>3xmlns:foo 属性を補ったところで、 なぜかその foo:bar 要素は文書のはじめのほう (詳しくは調べていない) に並べられる。参照していないのにだよ。 (名無しさん)

[5] そしてなぜか、 XML 根要素の上には BODY 要素節があって、更に上には HTML 要素 (これが文書要素) 節があるらしい。 (DOM 属性 documentElement が指すのはその HTML 要素節。) いったいなんだというのか。

なお、 >>2-4 は WinIE 6.0 + MSXML での話。 (名無しさん)

[6] Microsoft XML パーサーのバージョン一覧 http://support.microsoft.com/default.aspx?scid=kb;JA;269238 (名無しさん)

[7]

内容モデル中で参照される引数実体実体文に、 名前に置換される実体参照と空の実体への参照が連続していると、 次の実体宣言この場所ではスペースが許可されません。というよくわからないエラーがでる。 (名無しさん 2006-09-10 11:07:08 +00:00)

[8] Hawk's W3 Laboratory : XML : JavaScriptでXMLを扱う方法 ( 版) http://web.archive.org/web/20060902115316/www.hawk.34sp.com/stdpls/xml/js_xml.html

ProgIDとMSXMLのバージョンについて、現時点で調べが付いている部分のメモ。

Microsoft.XMLDOM … 使用されるバージョン≦3.0。IE 6.0以降がインストールされている場合は無条件で3.0。IE 5.Xを使用している場合、MSXML 3.0をxmlinst.exeを使用して置換モードでインストールした場合には3.0。それ以外の場合には同梱されているMSXMLのバージョン(2.X)。

MSXML.DOMDocument … 基本的にMicrosoft.XMLDOMと同じ。 Msxml2.DOMDocument … MSXML 3.0がインストールされている場合のみ使用可能。使用されるのは必ず3.0。 Msxml2.DOMDocument.3.0 … 必ず3.0。 Msxml2.DOMDocument.4.0 … 必ず4.0。

基本的に、バージョンを明示しないProgIDでは、バージョン3.0までしか使用されない(参考 http://www.microsoft.com/japan/msdn/xml/msxml/whatsnew40rtm.asp、参考2 http://www.microsoft.com/japan/developer/workshop/xml/general/replacemode.asp)。

同一起源方針との関係

[9] Microsoft.XMLDOM同一起源方針を無視して他のドメインXML を読み込めるといわれていますが、 Windows XP + IE6IE8 では確認できませんでした。

テスト・ケース

[10] Index of /~wakaba/-temp/test/dom/document/ls ( 版) https://suika.suikawiki.org/~wakaba/-temp/test/dom/document/ls/