首页 > 解决方案 > XSLT 1.0 试图在内部实现 java 代码,但总是以错误结束

问题描述

我刚刚加入了他们仍然使用旧 XSLT 1.0/1.1 打印文档的项目。我要写更多的逻辑,所以我对 xalan.java/js 做了一些研究,但我不知道为什么我不能直接在我的 xsl 文件中实现 java 代码,它总是会出错。我整天都在研究,我不得不在这里问。

我的问题是,是否可以像下面的示例一样打印出函数值?

我注意到导入 java 构建的函数效果很好

<xsl:template match="/">
    <fo:block>
       test over there:
          <xsl:call-template name="currentTime"/>
    </fo:block>
</xsl:template>     

<xsl:template name="currentTime" xmlns:java="http://xml.apache.org/xslt/java">
    <xsl:value-of select="java:java.util.Date.new()"/>
</xsl:template>

但是当我尝试用 xalan 调用 java 时,它会崩溃

<xsl:template match="/">
    <fo:block>
       java test over there:
          <xsl:call-template name="currentTime"/>
    </fo:block>
</xsl:template>     

<xsl:template name="currentTime" xmlns:java="http://xml.apache.org/xslt/java" xmlns:xalan="http://xml.apache.org/xalan" xmlns:counter="MyCounter" extension-element-prefixes="counter">

     <xalan:component prefix="counter" functions="response">
        <xalan:script lang="java">

          public String response(name) {
            return "" + (name);
          }

        </xalan:script>
     </xalan:component>

    <xsl:value-of select="counter:response('hello')"/>
</xsl:template>

标签: javaxsltxalan

解决方案


推荐阅读