Java / XSLT:一致する1引数の関数が見つかりません
質問
次のエラーが表示されます:
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を削除すると問題が解決します。
解決
XSLTのどこかで、<!> quot; { http://exslt.orgという名前の関数を参照しています。 / dynamic } evaluate()<!> quot;そして、あなたはそれに期待する引数の数を与えていません。
または...追加している拡張機能が見つかりません。
他のヒント
所属していません StackOverflow