gpt4 book ai didi

xpath - 什么时候必须将 XPath 属性设置为 XML DOM 对象?

转载 作者:行者123 更新时间:2023-12-03 15:50:01 26 4
gpt4 key购买 nike

例如:

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 表达式(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 有两种选择。

  1. 使用旧版本将选择语言指定为 XPath。
  2. 在不指定任何选择语言的情况下使用较新(不太旧?)的版本

来自ancient article 这闻起来像我的少年时代,描述了 XSL 模式和 XPath 之间的区别。

MSXML 2.0 provides support for XSL Patterns, the precursor to XPath 1.0. The notion of an XML addressing language was introduced into the original W3C XSL Working Drafts (http://www.w3.org/TR/1998/WD-xsl-19981216.html) and called XSL Patterns. MSXML 2.0 implements the XSL Patterns language as described in the original XSL specification with a few minor exceptions.

所以,我认为您遇到了次要(!)异常(exception)情况。

关于xpath - 什么时候必须将 XPath 属性设置为 XML DOM 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11462566/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com