我有一个工作样式表,可以正常使用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>
它总是抱怨该行,并且消息是“编译样式表时发生异常:未知节点类型:名称”。 似乎它无法理解函数名称()?
有人可以帮忙吗?感谢。
答案 0 :(得分:2)
您不能在XPath 1.x中将函数调用用作路径的一部分(即在斜杠/
之后)。要解决此问题,内置XPath函数通常接受节点集作为其参数,如果省略参数,则默认为.
。也就是说,name()
是name(.)
的缩写。
请改为尝试:
<xsl:if test="name($currentNode) != 'Figure'">