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()