2011-05-26 92 views
2

這是我的XSL:如何在Xalan中使用XSL函數?

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:r="my-own-namespace" 
    version="2.0" exclude-result-prefixes="xs"> 
    <xsl:template match="/"> 
    <xsl:value-of select="r:foo('test')"/> 
    </xsl:template> 
    <xsl:function name="r:foo"> 
    <xsl:value-of select="$val"/> 
    </xsl:function> 
</xsl:stylesheet> 

這就是Xalan的2.7.1(從Java中使用)是說:

(Location of error unknown)java.lang.NoSuchMethodException: For extension 
function, could not find method 
org.apache.xml.utils.NodeVector.foo([ExpressionContext,]). 

什麼是什麼?如何解決問題?

+0

另請注意,您的函數需要一個'xsl:param'例如''。 – 2011-05-26 16:58:20

回答

3

AFAIK Xalan只實現XSLT 1.0,而xsl:function是XSLT 2.0。您應該使用XSLT 2.0處理器,例如saxon

+0

是的,確切地說。撒克遜8.7完美地解析這些代碼。 – yegor256 2011-05-26 17:01:23