Saxon Xpath命名空间

时间:2010-12-09 14:56:12

标签: 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)时,我发出一个静态错误消息“无效的QName本地部分{company.com:catalog ....}”。

Xpath查询应该如何获取作者的值?

2 个答案:

答案 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