【问题标题】:Calling Java API from XSL throws exception "The URI http://xml.apache.org/xslt/java does not identify an external Java class"从 XSL 调用 Java API 引发异常“URI http://xml.apache.org/xslt/java 未识别外部 Java 类”
【发布时间】:2017-01-24 12:18:34
【问题描述】:

我正在为xsl 文件使用SAXON 处理器,如下所示:

   <?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。

我能知道是什么导致了这个错误吗?希望这里的专家能帮助我。

【问题讨论】:

  • 我能看到要求仅使用 XSLT 1.0 的唯一可能原因是确保您的代码可跨 XSLT 处理器移植,如果这是要求,那么使用 Xalan 扩展函数完全违背了目的.

标签: java xslt xslt-1.0 saxon


【解决方案1】:

我猜xmlns:java="http://xml.apache.org/xslt/java" 是特定于 Xalan 的,如果您想在 Saxon 6 中使用扩展函数,请参阅 http://saxon.sourceforge.net/saxon6.5.5/extensibility.html

这是一个适用于 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    相关资源
    最近更新 更多