Pregunta

Me sale el siguiente error:

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 superior de mi archivo xslt es

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

¿Sabes por qué puedo recibir este error?

UPDATE

Ahora se lee la parte superior de mi archivo 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">

y el XML donde estamos fallando es

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

Este código funciona en un servidor que ejecuta Tomcat 5.0 pero no funciona en un servidor que ejecuta Tomcat 5.5. Me imagino porque el código funciona en un servidor y no es un problema ambiental.

El XSLT se aplica al XML a través de una página JSP. Para mí, parece que el archivo xalan.jar no se está utilizando. La parte superior de la JSP es:

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

Actualizar El problema es que Saxon está siendo elegido como el analizador XML. Saxon no es compatible con esta funcionalidad. Eliminar el Saxon.jar soluciona el problema.

¿Fue útil?

Solución

En algún lugar de tu XSLT te refieres a una función llamada " { http://exslt.org/dynamic } evalúa () " y no le está dando la cantidad de argumentos que espera.

O ... no puede encontrar las extensiones que está agregando.

Otros consejos

Es probable que esté utilizando una versión anterior de Xalan .

Intente utilizar xalan: Evaluation () extensión.

Lea más sobre esto en este hilo .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top