XPath属性何时必须设置为XML DOM对象?

XPath属性何时必须设置为XML DOM对象?,xpath,vbscript,msxml,Xpath,Vbscript,Msxml,例如: Set objXML = CreateObject("Microsoft.XMLDOM") objXML.async = False objXML.validateOnParse = False objXML.resolveExternals = False objXML.load("http://www.w3schools.com/dom/books.xml") 'objXML.setProperty "SelectionLanguage", "XPath" For Each x

例如:

Set objXML = CreateObject("Microsoft.XMLDOM")

objXML.async = False
objXML.validateOnParse = False
objXML.resolveExternals = False
objXML.load("http://www.w3schools.com/dom/books.xml")

'objXML.setProperty "SelectionLanguage", "XPath"

For Each x In objXML.selectNodes("//book[@category='cooking' and @category='children']")
    WScript.Echo x.text
Next

For Each y In objXML.selectNodes("//book[position()<3]")
    WScript.Echo y.text
Next
如果我取消注释
objXML.setProperty“SelectionLanguage”,“XPath”
这两个表达式都有效


我的问题是什么时候必须显式设置XPath属性,或者在不设置此属性的情况下执行什么类型的表达式?

对于旧版本的MSXML,默认语言不是XPath
您已经使用旧的“版本独立ProgID”创建了DomDocument实例
Microsoft.XMLDOM
将MSXML 3.0(如果有)对应为支持独立ProgIDs的MSXML的最新版本。
您可以按如下方式确定默认选择语言:

WScript.Echo objXML.getProperty("SelectionLanguage")
必须返回
XSLPattern
,选择语言不支持类似
position()
的方法
XPath
是MSXML 4.0及更高版本的默认选择语言,因此正确使用XPath有两种选择

  • 使用旧版本将选择语言指定为XPath
  • 在不指定任何选择语言的情况下使用较新(较旧?)版本
  • 从一个闻起来像我十几岁时描述XSL模式和XPath之间区别的例子

    MSXML2.0提供对XSL模式的支持,XSL模式是XPath的前身 1.0. 最初的W3CXSL工作草案中引入了XML寻址语言的概念 (http://www.w3.org/TR/1998/WD-xsl-19981216.html)并称之为XSL 模式MSXML2.0实现了所述的XSL模式语言 在原始XSL规范中,除了一些小的例外

    所以,我认为你有轻微的(!)例外。

    回答得很好!谢谢:)我从未听说过“XSL模式”表达式。因此,设置至少
    CreateObject(“MSXML2.DOMDocument.4.0”)
    可以确保XPath在所有情况下都有效
    WScript.Echo objXML.getProperty("SelectionLanguage")