例如:
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
When objXML.setProperty "SelectionLanguage", "XPath"
被注释,则第一个 xpath 表达式(x 对象)返回有效,但第二个 xpath 表达式(y 对象)引发错误:
msxml3.dll (14, 1) : Unknown method.
//book[-->position()<--<3]
如果我取消注释objXML.setProperty "SelectionLanguage", "XPath"
两种表达方式都有效。
我的问题是何时必须显式设置 XPath 属性,或者在不设置此属性的情况下执行哪种表达式?
对于旧版本的 MSXML,默认语言不是 XPath。
您已使用旧的“版本无关的 ProgID”创建了 DomDocument 实例。Microsoft.XMLDOM
对应于 MSXML 3.0(如果有)作为支持独立 ProgID 的 MSXML 的最后一个版本。
您可以像这样确定默认选择语言:
WScript.Echo objXML.getProperty("SelectionLanguage")
一定要退货XSLPattern
选择语言不支持类似的方法position()
.
XPath
是 MSXML 4.0 及更高版本的默认选择语言,因此正确使用 XPath 有两种选择。
- 使用旧版本将选择语言指定为 XPath。
- 使用较新(不太旧?)的版本而不指定任何选择语言
From an 古文 http://msdn.microsoft.com/en-us/magazine/cc302348.aspx 这闻起来就像我十几岁的时候描述 XSL 模式和 XPath 之间的区别。
MSXML 2.0 提供支持XSL 模式,前身为XPath1.0。 XML 寻址语言的概念被引入到最初的 W3C XSL 工作草案中
(http://www.w3.org/TR/1998/WD-xsl-19981216.html) 并称为 XSL
图案。MSXML 2.0 实现了 XSL 模式语言,如上所述
在原始 XSL 规范中,有一些小的例外.
所以,我认为你有轻微的(!)例外。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)