Java XSLT TransformerException:找不到函数:exists

时间:2012-02-23 18:38:42

标签: java xslt

谷歌出现了零,所以我在这里。

我正在使用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。我检查了两者上的命名空间,它们完全相同。

知道可能会发生什么吗?

2 个答案:

答案 0 :(得分:3)

我认为您可以像这样检查节点是否存在

 <xsl:if test="first">

答案 1 :(得分:3)

exists()是一个XPath 2.0函数,因此错误消息意味着您正在使用XSLT 1.0处理器。如果您正在使用Java,那么我们没有理由不继续使用XSLT 2.0 - 这将为您节省大量时间。