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. Я предполагаю, потому что код работает на одном сервер, а не это экологическая проблема.
XSLT применяется к XML через страницу JSP. Мне кажется, это Ксалан.файл 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 не поддерживает эту функциональность. Удаление Сакса.jar устраняет проблему.
2 ответов
где-то в вашем XSLT вы ссылаетесь на функцию с именем" {http://exslt.org/dynamic}evaluate ()", и вы не даете ему количество аргументов, которое он ожидает.
или... он не может найти расширения, которые вы добавляете.
скорее всего, вы можете использовать более старую версию Xalan.
попробуйте вместо этого использовать xalan:evaluate()