test - Java/XSLT: no se puede encontrar una función de 1 argumento correspondiente
xslt editor (2)
En algún lugar de su XSLT se refiere a una función llamada "{ http://exslt.org/dynamic } evaluate ()" y no le está dando la cantidad de argumentos que espera.
O ... no puede encontrar las extensiones que está agregando.
Obtuve 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 estar recibiendo este error?
ACTUALIZAR
La parte superior de mi archivo XML ahora se lee.
<?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 está funcionando en un servidor y no es un problema ambiental.
El XSLT se está aplicando 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 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.*"%>
Actualización El problema es que Saxon está siendo elegido como el analizador XML. Saxon no es compatible con esta funcionalidad. La eliminación de Saxon.jar corrige el problema.
Lo más probable es que esté utilizando una versión anterior de Xalan .
Intente usar la xalan:evaluate()
.
Lea más sobre esto en este hilo .