Java/XSLT: Impossible de trouver une fonction à 1 argument correspondante




jsp tomcat (2)

J'ai l'erreur suivante:

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)

Le haut de mon fichier xslt est

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

Savez-vous pourquoi je peux avoir cette erreur?

METTRE À JOUR

Le début de mon fichier XML est maintenant lu.

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

et le XML où nous échouons est

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

Ce code fonctionne sur un serveur exécutant Tomcat 5.0 mais ne fonctionne pas sur un serveur exécutant Tomcat 5.5. J'imagine parce que le code fonctionne sur un serveur et non c'est un problème environnemental.

Le XSLT est appliqué au XML via une page JSP. Pour moi, il semble que le fichier xalan.jar n'est pas utilisé. Le sommet de la JSP est:

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

Mise à jour Le problème est que Saxon est choisi comme analyseur XML. Saxon ne supporte pas cette fonctionnalité. La suppression de Saxon.jar résout le problème.


Quelque part dans votre XSLT vous faites référence à une fonction nommée "{ http://exslt.org/dynamic } evaluate ()" et vous ne lui donnez pas le nombre d'arguments attendus.

Ou ... il est incapable de trouver les extensions que vous ajoutez.


Les chances sont que vous utilisez une ancienne version de Xalan .

Essayez plutôt d'utiliser l' xalan:evaluate() .

En savoir plus sur ce sujet dans ce fil .





xalan