<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MSXML</anchor></dfn> は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Microsoft</anchor> による <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> の実装です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> 
かつては <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IE</anchor> が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> の処理に用いていました。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> 
その他色々な <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Windows</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アプリケーション</anchor>が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor>
を処理するために使っていました。</p><section><h1>実装</h1><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <em>MSXML に XHTML 1.1 を解析させる - DTD 関連</em> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.satoshii.org/markup/dtd/xhtml11-msxml">http://www.satoshii.org/markup/dtd/xhtml11-msxml</anchor-external></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end><pre class="XML">&lt;!ATTLIST foo xmlns CDATA #FIXED &quot;http://foo.example/&quot;&gt;</pre></p><p>なんてやると、名前空間の既定属性宣言は対応していないとか言って処理してくれない、
というのは有名な話。
こりゃ XML/XML 名前空間適合は名乗れないな。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end><pre class="XML">&lt;!ENTITY foo &quot;<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="foo:bar/">foo:bar/</anchor-external>&quot;&gt;</pre></p><p>のようにすると、接頭辞 <samp class="XML">foo</samp> が宣言されていないと言われる。
これも MSXML が実体置換文を文書実現値より先に処理しているのが原因。
やっぱり不適合だ。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end>
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;3</anchor-internal> に <samp class="XMLa">xmlns:foo</samp> 属性を補ったところで、
なぜかその <samp class="XMLe">foo:bar</samp> 要素は文書のはじめのほう (詳しくは調べていない) に並べられる。参照していないのにだよ。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end>
そしてなぜか、 XML 根要素の上には <code>BODY</code> 要素節があって、更に上には <code>HTML</code> 要素 (これが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書要素</anchor>) 節があるらしい。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM</anchor> 属性 <code class="DOMa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">documentElement</anchor></code> が指すのはその <code>HTML</code> 要素節。)
いったいなんだというのか。</p><p>なお、 <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal>-4 は WinIE 6.0 + MSXML での話。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end>
<cite>Microsoft XML パーサーのバージョン一覧</cite> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://support.microsoft.com/default.aspx?scid=kb;JA;269238">http://support.microsoft.com/default.aspx?scid=kb;JA;269238</anchor-external>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end></p><ul><li><anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://suika.suikawiki.org/~wakaba/-temp/test/xml/dtd/model/empty-peref-3.xml">https://suika.suikawiki.org/~wakaba/-temp/test/xml/dtd/model/empty-peref-3.xml</anchor-external></li><li><anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://suika.suikawiki.org/~wakaba/-temp/test/xml/dtd/model/empty-peref-4.xml">https://suika.suikawiki.org/~wakaba/-temp/test/xml/dtd/model/empty-peref-4.xml</anchor-external></li></ul><p><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容モデル</anchor>中で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">参照</anchor>される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数実体</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体文</anchor>に、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名前</anchor>に置換される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体参照</anchor>と空の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体</anchor>への<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">参照</anchor>が連続していると、
次の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体宣言</anchor>で<q>この場所ではスペースが許可されません。</q>というよくわからないエラーがでる。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2006-09-10 11:07:08 +00:00</weak>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <cite>Hawk's W3 Laboratory : XML : JavaScriptでXMLを扱う方法</cite> (<time>2009-01-04 12:36:07 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://web.archive.org/web/20060902115316/www.hawk.34sp.com/stdpls/xml/js_xml.html">http://web.archive.org/web/20060902115316/www.hawk.34sp.com/stdpls/xml/js_xml.html</anchor-external></p><blockquote><p>ProgIDとMSXMLのバージョンについて、現時点で調べが付いている部分のメモ。</p><p>Microsoft.XMLDOM … 使用されるバージョン≦3.0。IE 6.0以降がインストールされている場合は無条件で3.0。IE 5.Xを使用している場合、MSXML 3.0をxmlinst.exeを使用して置換モードでインストールした場合には3.0。それ以外の場合には同梱されているMSXMLのバージョン(2.X)。</p><p>MSXML.DOMDocument … 基本的にMicrosoft.XMLDOMと同じ。
Msxml2.DOMDocument … MSXML 3.0がインストールされている場合のみ使用可能。使用されるのは必ず3.0。
Msxml2.DOMDocument.3.0 … 必ず3.0。
Msxml2.DOMDocument.4.0 … 必ず4.0。</p><p>基本的に、バージョンを明示しないProgIDでは、バージョン3.0までしか使用されない(参考
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.microsoft.com/japan/msdn/xml/msxml/whatsnew40rtm.asp">http://www.microsoft.com/japan/msdn/xml/msxml/whatsnew40rtm.asp</anchor-external>、参考2
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.microsoft.com/japan/developer/workshop/xml/general/replacemode.asp">http://www.microsoft.com/japan/developer/workshop/xml/general/replacemode.asp</anchor-external>)。 </p></blockquote></section><section><h1>同一起源方針との関係</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <code xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Microsoft.XMLDOM</anchor></code> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">同一起源方針</anchor>を無視して他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ドメイン</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> を読み込めるといわれていますが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Windows XP</anchor> + <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IE6</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IE8</anchor> では確認できませんでした。</p></section><section><h1>テスト・ケース</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <cite>Index of /~wakaba/-temp/test/dom/document/ls</cite> (<time>2011-04-24 12:18:40 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://suika.suikawiki.org/~wakaba/-temp/test/dom/document/ls/">https://suika.suikawiki.org/~wakaba/-temp/test/dom/document/ls/</anchor-external></p></section></body></html>