给定以下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/