Domanda

Ottengo il seguente errore:

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)

La parte superiore del mio file 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"> 

Sai perché potrebbe essere visualizzato questo errore?

Aggiorna

La parte superiore del mio file XML ora legge.

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

e l'XML in cui stiamo fallendo è

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

Questo codice funziona su un server che esegue Tomcat 5.0 ma non funziona su un server che esegue Tomcat 5.5. Immagino perché il codice funziona su un server e non è un problema ambientale.

L'XSLT viene applicato all'XML tramite una pagina JSP. A me sembra che il file xalan.jar non venga utilizzato. La parte superiore di 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.*"%>

Aggiorna Il problema è che Saxon viene scelto come parser XML. Saxon non supporta questa funzionalità. La rimozione di Saxon.jar risolve il problema.

È stato utile?

Soluzione

Da qualche parte nella tua XSLT ti riferisci a una funzione chiamata " { http://exslt.org/dynamic } valutare () " e non gli stai dando il numero di argomenti che si aspetta.

Oppure ... non è possibile trovare le estensioni che stai aggiungendo.

Altri suggerimenti

È probabile che tu stia utilizzando una versione precedente di Xalan .

Prova invece a utilizzare xalan: assess () .

Ulteriori informazioni al riguardo in questa discussione .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top