2009-01-16 5 views
7

ich die folgende Fehlermeldung erhalten:Java/XSLT: Es kann keine passende 1-Argument Funktion findet

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) 

Die Spitze meiner xslt-Datei ist

<?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"> 

Wissen Sie, warum ich immer sein kann dieser Fehler?

UPDATE

Die Spitze meiner XML-Datei liest jetzt.

<?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"> 

und die XML, wo wir versagt werden, ist

<xsl:template name="test"> 
    <xsl:param name="param" /> 
    <xsl:value-of select="$param"/> 
    <xsl:value-of select="xalan:evaluate($param)"/> 
</xsl:template> 

Diese Codes arbeitet auf einem Server läuft Tomcat 5.0 aber funktioniert nicht auf einem Server mit Tomcat 5.5. Ich stelle mir vor, weil der Code auf einem Server funktioniert und nicht ein Umweltproblem ist.

Das XSLT wird über eine JSP-Seite auf das XML angewendet. Für mich sieht es so aus, als ob die Datei xalan.jar nicht verwendet wird. Der obere Teil der JSP ist:

<%@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.*"%> 

aktualisieren Das Problem ist, dass Saxon als XML-Parser gewählt wird. Saxon unterstützt diese Funktionalität nicht. Das Entfernen der Saxon.jar behebt das Problem.

+0

Wow, obskure :) gut zu wissen. Vielen Dank, dass Sie das Update +1 haben. –

Antwort

1

Irgendwo in Ihrem XSLT beziehen Sie sich auf eine Funktion namens "{http://exslt.org/dynamic} evaluate()" und Sie geben es nicht die Anzahl der Argumente, die es erwartet.

Oder ... es ist nicht möglich, die Erweiterungen zu finden, die Sie hinzufügen.

+0

Oder ... es ist nicht möglich, die Erweiterungen zu finden, die Sie hinzufügen. Scheint so zu sein. Irgendeine Idee, wie ich die Erweiterung finden würde? –

+0

Die Übereinstimmung mit der Erweiterung ist nicht korrekt. –

1

Möglicherweise verwenden Sie eine ältere Version von Xalan.

Versuchen Sie stattdessen mit der xalan:evaluate() Erweiterung.

Lesen Sie mehr dazu in this thread.

+0

Geändert zu Verwendung von xalan: evaluate() aber immer noch den gleichen Fehler geben. –

Verwandte Themen