xpath - Saxon Xpath 命名空间

标签 xpath saxon

给定以下xml:

<Document xmlns="urn:company.com:catalog.01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <book>
        <author>Wells</author>
    </book>
</Document>

使用 Xerces,以下 xpath 查询有效:
//urn:company.com:catalog.01:author

当我使用 Saxon (v 8.7) 时,我会出现带有消息“Invalid QName local part {company.com:catalog....}”的 StaticError。

Xpath 查询应该是什么样子才能获取 author 的值?

最佳答案

Xerces 不应允许像这样的 XPath 表达式

//urn:company.com:catalog.01:author 

XPath 与 XML 名称兼容,因此 : QName 中的(冒号)将前缀部分与 QName 的本地名称部分分开。

XPath 中没有语法可以在名称测试中使用完整扩展的 QName:

你可以使用
//*[local-name()='author'][namespace-uri()='urn:company.com:catalog.01']

关于xpath - Saxon Xpath 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4399552/

相关文章:

sql-server - Xml.modify 'replace value of' 中的 SQL REPLACE 函数

xpath - HiveUDF + saxon 9.1.0.8 + Java8 =创建XPathFactory失败

xquery - 尝试从 bash 运行查询字符串时出现 Saxon-HE 9.7 : "no base URI is available" error,

java - XQuery Saxon 异常 (java.lang.IllegalArgumentException)

Java-XPath 生成父子结构

java - XSD - 如何定义两个元素之间的关系

xml - XSLT - 作为一系列节点的参数

java - 使用 Saxon 通过 XSLT 生成 URL

python - 如何向在Python中使用lxml中的xpath找到的标签添加属性?

c# - XPathSelectElement 当有多个时选择第二个