【发布时间】:2010-10-01 19:10:49
【问题描述】:
我收到以下错误:
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 的服务器。我想是因为代码在一台服务器上运行,而不是环境问题。
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 即可解决问题。
【问题讨论】:
标签: java jsp xslt tomcat xalan