/
611.txt
43 lines (34 loc) · 3.55 KB
/
611.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
[1]
[CITE[MS独自拡張selectNodesメソッドについて]]
<http://members.jcom.home.ne.jp/jintrick/Personal/d20029f.html#d15_11>
([[名無しさん]] [sage])
[2]
[CITE[Hawk's W3 Laboratory : XML : DOMとXPathの連携]]
[DEL[<http://www.hawk.34sp.com/stdpls/xml/dom_xpath.html#case-msxml>]]
<http://web.archive.org/web/20060902115428/www.hawk.34sp.com/stdpls/xml/dom_xpath.html>
>
MSXMLにおいて、上で解説するXPathによるノード選択を利用するには、MSXML API History
<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/htm/sdk_history_8zqx.asp?frame=true>
などから推測するに、バージョン2.6以降が必要となるようです。対応するIEのバージョンとしてはIE6以降となります(参考
<http://www.microsoft.com/japan/developer/workshop/xml/general/replacemode.asp>)。
>
ではそれ以前のバージョンでは、上記の内容は一切無効なのかというと、実はそうでもありません。例えば selectNodes/selectSingleNodeメソッドはMSXMLのバージョン2.0から既に実装されています。ただ「XPathによる選択」が可能なのはバージョン2.6以降なのです。SelectionLanguageの解説でも少し触れましたが、それより前のバージョンの selectNodes/selectSingleNodeメソッドで使用できる選択言語は”XSL Pattern”という、XSLのWorking Draft段階において存在した選択言語です。この言語は、ルートからの位置を/で区切って指し示すなど、現在のXPathと一部共通する文法を持っています。つまり、ごく簡単なXPathならばそのまま使用することが出来るということです。
>
このあたりの変遷について、多少推測混じりになりますが時系列を追ってみますと、
>
= MSXML2.0には、(恐らく当時最新だった)”XSL Pattern”を使用して要素を選択する selectNodes/selectSingleNodeというメソッドが存在した。
= MSXML2.6で、selectNodes/selectSingleNodeは(多分そのころ正式勧告になった)XPath1.0に対応した。しかし後方互換性を保つためデフォルトの動作は”XSL Pattern”のまま据え置かれ、選択言語を切り替えるためのsetProperty メソッドと SelectionLanguage プロパティが用意された。
= MSXML4.0からは”XPath”が唯一の選択言語となり、 SelectionLanguageを設定する必要はなくなった。
>
根拠としたのはMSXMLのSDKや、以下のページなどです。
MSXML 3.0 Supports XPath 1.0, XSLT 1.0, XDR, and SAX2
<http://msdn.microsoft.com/msdnmag/issues/0900/xml/default.aspx>
内容は全然関係ないですが、Microsoftのページですからある程度信頼できるでしょう。
>
また先述したようにMSXML3.0以前ならば SelectionLanguageを指定しないことで2.5以前の動作が再現できます。完全なチェックはしていませんが、IE6+MSXML3.0で概ね仕様書通りの動作をすることを確かめました。(ただしfirst-of-type()などは最初から実装されていないのか、動作しませんでした)
[3]
[CITE[d:id:quaa]] ([CODE[2007-07-22 14:20:44 +09:00]] 版) <http://d.hatena.ne.jp/quaa/20070722#p1>
([[名無しさん]] [WEAK[2007-07-22 05:45:52 +00:00]])
[4]
[CITE[Hatena::agenda - Javascript1.7のカスタムイテレータとXPath]] ([TIME[2007-09-07 20:35:46 +09:00]] 版) <http://d.hatena.ne.jp/jintrick/20070904>
[5] [[Chrome]] は実装していないようです。 [TIME[2013-09-23T10:07:53.300Z]]