XSLT 1.0 пытается реализовать код java внутри, но всегда заканчивается ошибкой - PullRequest
0 голосов
/ 17 апреля 2020

Я только что присоединился к проекту, где они все еще используют старый XSLT 1.0 / 1.1 для печати документов. Я должен написать еще несколько логи c, поэтому я провел некоторое исследование о xalan.java/js, но я не знаю, почему я не могу внедрить код java прямо в мой xsl-файл, он всегда выдает ошибку. Я трачу на исследования целый день, и мне пришлось спросить здесь.

Мой вопрос, возможно ли даже распечатать значение функции, как в примере ниже?

Я заметил импорт 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>

Но когда я пытаюсь вызвать 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>
...