从XSL调用Java API会引发异常" URI http://xml.apache.org/xslt/java不识别外部Java类"

时间:2016-09-16 09:56:08

标签: java xslt xslt-1.0 saxon

我在SAXON文件中使用xsl处理程序,如下所示:

   <?xml version="1.0" encoding="utf-8"?>
   <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                    version="1.0" xmlns:java="http://xml.apache.org/xslt/java"
                    exclude-result-prefixes="java">
    <xsl:output method="xml"/>
    <xsl:template name="printjavaDate">
    <xsl:variable name="date" select="java:java.util.Date.new()"/>
    <xsl:value-of select=""/>
    </xsl:template>

但是这段代码并不适合我。

它抛出错误:

javax.xml.transform.TransformerException: The URI http://xml.apache.org/xslt/java does not identify an external Java class
                at com.icl.saxon.style.StyleElement.styleError(StyleElement.java:803)

我不确定为什么会这样。 我只要求使用XSLT 1.0。

我可以知道导致此错误的原因吗?希望这里的专家会帮助我。

1 个答案:

答案 0 :(得分:0)

我猜xmlns:java="http://xml.apache.org/xslt/java"特定于Xalan,如果您想在Saxon 6中使用扩展函数,请参阅http://domain2.com

这是一个适用于Saxon 6.5的示例:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
    xmlns:date="java:java.util.Date">

    <xsl:output method="xml"/>

    <xsl:template name="printjavaDate" match="/">
        <xsl:variable name="date" select="date:new()"/>
        <xsl:value-of select="$date"/>
    </xsl:template>

</xsl:stylesheet>