XPath 多属性条件变量

XPath Multiple Attribute Condition Variables

样本XML

<catalog>
    <book id="Adventure" Type="Hardcover">
        <other>
            <author name="Jones" id="Adventure">
            </author>
        </other>
    </book>
</catalog>

这些说法有道理吗?我需要进行完整性检查,看看所有这些 variables/quotes 发生了什么。我尝试使用其中一个 XPath 测试站点,但它一直给我一个错误,我不确定为什么。

bookVar = "Adventure"
bookStyle = "Hardcover"
bookAuthor = "Jon"

Set my_location = XMLFile.SelectNodes("/catalog/book[@id=""" & bookVar & """]/author/other/*[contains(name(),""" & bookAuthor & """]")

Set my_location2 = XMLFile.SelectNodes("/catalog/book[@id=""" & bookVar & """ and Type=""" & bookStyle &"""]

Set my_location3 = XMLFile.SelectNodes("/catalog/book[@id=""" & bookVar & """]/other/author/*[contains(name(),""" & bookAuthor & """]")

几个注意事项:

  • 在属性名称的开头使用@来引用xpath中的XML属性

  • 我建议在您的 xpath 中使用单引号,因为使用的字符串包装字符是双引号。这将使您的代码看起来更清晰。

  • name() return 当前上下文的名称 element/attribute,使用 @name 代替引用名为 [=14] 的 XML 属性=]

  • 您的某些路径与 XML 文档中元素的确切层次不对应

xpath 查询示例:

bookVar = "Adventure"
bookStyle = "Hardcover"
bookAuthor = "Jon"

Set my_location = XMLFile.SelectNodes("/catalog/book[@id='" & bookVar & "']/other/author[contains(@name,'" & bookAuthor & "']")

Set my_location2 = XMLFile.SelectNodes("/catalog/book[@id='" & bookVar & "' and @Type='" & bookStyle &"']")