我正在使用Java编写XSLT。这不是项目中唯一的XSLT,其他的工作得很好。我的问题如下:
我收到了一个错误消息&#34的javax.xml.transform.TransformerException;找不到函数:exists"。我的XSLT如下:
<?xml version="1.0"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xpath="http://www.w3.org/2005/xpath-functions" xmlns:java="java"
xmlns:url="http://whatever/java/java.net.URLEncoder"
exclude-result-prefixes="url">
<xsl:template match="User">
<user>
<id><xsl:value-of select="id"/></id>
<xsl:if test="exists(first)"><first><xsl:value-of select="first"/></first></xsl:if>
</user>
</xsl:template>
</xsl:stylesheet>
XML输入格式正确,如果我删除<xsl:if test="exists(first)">
行,一切运行良好。
如上所述,我还有其他运行良好的XSLT,包括一些使用exists
函数的XSLT。我检查了两者上的命名空间,它们完全相同。
知道可能会发生什么吗?
答案 0 :(得分:3)
我认为您可以像这样检查节点是否存在
<xsl:if test="first">
答案 1 :(得分:3)
exists()是一个XPath 2.0函数,因此错误消息意味着您正在使用XSLT 1.0处理器。如果您正在使用Java,那么我们没有理由不继续使用XSLT 2.0 - 这将为您节省大量时间。