执行xslt转换时出现XQuery错误

时间:2011-04-21 17:36:50

标签: xml xslt xpath xquery

我有一个工作样式表,可以正常使用saxon.Now我使用的是简单的XQuery:

transform:transform($xmlNode, $xslNode, ()),  

做同样的事情,它总是抱怨我的样式表中的语法,即:

<xsl:template match="CrossReference ">
     <xsl:variable name="currentNode" select="//*[@Target=@pointer]"/>
     <xsl:if test="$currentNode/name()!= 'Figure'">

            ...
      </xsl:if>
</xsl:template>

它总是抱怨该行,并且消息是“编译样式表时发生异常:未知节点类型:名称”。 似乎它无法理解函数名称()?

有人可以帮忙吗?感谢。

1 个答案:

答案 0 :(得分:2)

您不能在XPath 1.x中将函数调用用作路径的一部分(即在斜杠/之后)。要解决此问题,内置XPath函数通常接受节点集作为其参数,如果省略参数,则默认为.。也就是说,name()name(.)的缩写。

请改为尝试:

<xsl:if test="name($currentNode) != 'Figure'">