2

给定以下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 的值?

4

2 回答 2

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']
于 2010-12-09T15:26:09.273 回答
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
于 2010-12-11T08:03:51.377 回答