给出以下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)时,我发出一个静态错误消息“无效的QName本地部分{company.com:catalog ....}”。
Xpath查询应该如何获取作者的值?
答案 0 :(得分:0)
Xerces不应该允许像
这样的XPath表达式//urn:company.com:catalog.01:author
XPath符合XML名称,因此QName中的:
(冒号)将前缀部分与QName的本地名称部分分开。
XPath中没有语法在名称测试中使用完整的扩展QName:
您可以使用
//*[local-name()='author'][namespace-uri()='urn:company.com:catalog.01']
答案 1 :(得分:0)
您没有发布您的XSL文件。我最近经历了这个,解决方案是确保xsl文件有一行如下:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:c="urn:company.com:catalog.01">
然后,您对xml文件中元素的引用前缀为“c:”:
//c:author