Я получаю следующую ошибку:
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 применяется к XML через страницу JSP. Мне кажется, что файл 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.*"%>
Обновлять Проблема в том, что в качестве парсера XML выбирается Saxon. Saxon не поддерживает эту функцию. Удаление Saxon.jar решает проблему.




Где-то в вашем XSLT вы имеете в виду функцию с именем "{http://exslt.org/dynamic} Assessment ()" и не даете ей ожидаемого количества аргументов.
Или ... он не может найти добавляемые расширения.
Или ... он не может найти добавляемые расширения. Вроде так. Есть идеи, как мне найти расширение?
Скорее всего, вы используете старую версию Xalan..
Вместо этого попробуйте использовать расширение xalan:evaluate().
Подробнее об этом читайте в эта ветка.
Изменен на использование xalan: Assessment (), но по-прежнему выдает ту же ошибку.
Ого, непонятно :) Хорошо бы знать. Спасибо за публикацию исправления +1