7

次のエラーが表示されます。

javax.servlet.ServletException: Cannot find a matching 1-argument function named {http://exslt.org/dynamic}evaluate()
at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:841)
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:774)

私のxsltファイルの先頭は

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

このエラーが発生する理由を知っていますか?

アップデート

XML ファイルの先頭が読み取れるようになりました。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     version="1.0"
     xmlns:xalan="http://xml.apache.org/xalan" 
     exclude-result-prefixes="xalan">

失敗しているXMLは

<xsl:template name="test">
  <xsl:param name="param" />
  <xsl:value-of select="$param"/>
  <xsl:value-of select="xalan:evaluate($param)"/>
</xsl:template>

このコードは、Tomcat 5.0 を実行しているサーバーでは機能しますが、Tomcat 5.5 を実行しているサーバーでは機能しません。コードが 1 つのサーバーで動作していて、環境の問題ではないためだと思います。

XSLT は、JSP ページを介して XML に適用されています。xalan.jar ファイルが使用されていないように見えます。JSP のトップは次のとおりです。

<%@page import="javax.xml.transform.*"%>
<%@page import="javax.xml.transform.stream.*"%>
<%@page import="         java.security.Principal,
             java.net.URL, 
             java.net.URLConnection, 
             java.io.InputStream,
             java.io.InputStreamReader,
             java.io.Reader,
             java.io.BufferedReader,
             java.io.File,
             javax.xml.transform.*,
             javax.xml.transform.stream.*,
             javax.xml.transform.*,
             javax.xml.transform.stream.*"%>

更新 問題は、Saxon が XML パーサーとして選択されていることです。Saxon はこの機能をサポートしていません。Saxon.jar を削除すると、問題が修正されます。

4

2 に答える 2

1

XSLT のどこかで、「{ http://exslt.org/dynamic }evaluate()」という名前の関数を参照していますが、期待する数の引数を与えていません。

または... 追加している拡張機能が見つかりません。

于 2009-01-16T11:57:24.420 に答える
1

古いバージョンの Xalan を使用している可能性があります

代わりにxalan:evaluate()拡張機能を使用してみてください。

詳細については、このスレッドを参照してください。

于 2009-01-16T14:29:48.170 に答える