Morris Kwan wrote:
Thanks! Unfortunaly the problem didn't disappear, even though the error message changed..It is likely that you are using the old Xalan release packaged in JDK 1.4. Please read this FAQ (http://xml.apache.org/xalan-j/faq.html#faq-N100CB) on how to use Xalan with JDK 1.4.
This is strange because the method org.apache.xalan.lib.ExsltMath.abs exists. Adding Xalan jars to classpath doesn't help.
Here is what happens:
[EMAIL PROTECTED] ~/xslt-test]$ cat XalanProblem.java import org.w3c.dom.*; import javax.xml.parsers.*; import javax.xml.transform.*; import javax.xml.transform.sax.*; import javax.xml.transform.stream.*; import javax.xml.transform.dom.*; import org.xml.sax.*; import java.io.*;
public class XalanProblem { public static void main(String a[]) {
try {DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
Document xml = dbf.newDocumentBuilder().parse(new FileInputStream("xml.xml"));
Document xslt = dbf.newDocumentBuilder().parse(new FileInputStream("xslt.xml"));
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(new DOMSource(xslt));
transformer.transform(new DOMSource(xml), new StreamResult(System.out));
} catch (Exception e) {
e.printStackTrace();
}
}
}
[EMAIL PROTECTED] ~/xslt-test]$ cat xslt.xml <?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:math="http://exslt.org/math" version="1.0">
<xsl:template match="/" > <xsl:value-of select="math:abs(2)" /> </xsl:template>
</xsl:stylesheet>
[EMAIL PROTECTED] ~/xslt-test]$ java -Xbootclasspath/p:/home/medar/tomcat/common/lib/xalan.jar:/home/medar/tomcat/common/lib/xml-apis.jar:/home/medar/tomcat/common/lib/xercesImpl.jar -Djavax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpl XalanProblem javax.xml.transform.TransformerException: java.lang.NoSuchMethodException: For extension function, could not find method org.apache.xalan.lib.ExsltMath.abs([ExpressionContext,] #NUMBER).
Checked both static and instance methods.
at org.apache.xalan.extensions.ExtensionHandlerJavaClass.callFunction(ExtensionHandlerJavaClass.java:357)
at org.apache.xalan.extensions.ExtensionsTable.extFunction(ExtensionsTable.java:227)
at org.apache.xalan.transformer.TransformerImpl.extFunction(TransformerImpl.java:460)
at org.apache.xpath.functions.FuncExtFunction.execute(FuncExtFunction.java:196)
at org.apache.xpath.Expression.executeCharsToContentHandler(Expression.java:357)
at org.apache.xalan.templates.ElemValueOf.execute(ElemValueOf.java:319)
at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2324)
at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2147)
at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1203)
at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:665)
at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1119)
at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1097)
at XalanProblem.main(XalanProblem.java:22)
Caused by: java.lang.NoSuchMethodException: For extension function, could not find method org.apache.xalan.lib.ExsltMath.abs([ExpressionContext,] #NUMBER).
Checked both static and instance methods.
at org.apache.xalan.extensions.MethodResolver.getMethod(MethodResolver.java:316)
at org.apache.xalan.extensions.ExtensionHandlerJavaClass.callFunction(ExtensionHandlerJavaClass.java:320)
... 12 more
---------
java.lang.NoSuchMethodException: For extension function, could not find method org.apache.xalan.lib.ExsltMath.abs([ExpressionContext,] #NUMBER).
Checked both static and instance methods.
at org.apache.xalan.extensions.MethodResolver.getMethod(MethodResolver.java:316)
at org.apache.xalan.extensions.ExtensionHandlerJavaClass.callFunction(ExtensionHandlerJavaClass.java:320)
at org.apache.xalan.extensions.ExtensionsTable.extFunction(ExtensionsTable.java:227)
at org.apache.xalan.transformer.TransformerImpl.extFunction(TransformerImpl.java:460)
at org.apache.xpath.functions.FuncExtFunction.execute(FuncExtFunction.java:196)
at org.apache.xpath.Expression.executeCharsToContentHandler(Expression.java:357)
at org.apache.xalan.templates.ElemValueOf.execute(ElemValueOf.java:319)
at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2324)
at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2147)
at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1203)
at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:665)
at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1119)
at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1097)
at XalanProblem.main(XalanProblem.java:22)
[EMAIL PROTECTED] ~/xslt-test]$
