错误:'非静态Java函数'evaluate'的第一个参数不是有效的对象引用。使用TrasformFactory时

时间:2010-10-14 15:42:02

标签: java xsl-fo xpath xalan

我正在尝试将xsl + xml转换为xml(稍后使用FOP库将其转换为pdf)。我使用的JDK是1.5,我无法使用另一个(这就是我工作的公司正在使用的)。我读到java 1.5的xalan jar是导致错误的人。导致错误的文本是:

"dyn:evaluate($xpath)"/>

在:

  <xsl:variable name="paramName" select="@name"/>
    <xsl:variable name="xpath"
      select="concat('/doc/data/',$paramName)" /> 
      <fo:inline>
        <xsl:value-of select="dyn:evaluate($xpath)"/>
      </fo:inline>
    </xsl:template>

有没有改变罐子的方式?有没有办法以不同的方式写它?或者我使用了错误的语法?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

evaluate()是一个EXSLT扩展函数。它是非标准的,但许多XSLT处理器including xalan都支持它。

您是否在样式表中声明了dyn名称空间前缀,以便正确引用EXSLT动态名称空间?

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:dyn="http://exslt.org/dynamic"
                extension-element-prefixes="dyn">

...

</xsl:stylesheet>