Hi
I use newest xalan and jaxp-version and tried to
transform xml to html in a servlet.
This exception occured:
java.lang.NoSuchMethodError: org.w3c.dom.Node:
method getLocalName()Ljava/lang/String; not
found
at
org.apache.xalan.templates.TemplateList.getHead(TemplateList.java:471)
at org.apache.xalan.templates.TemplateList.getTemplate(TemplateList.java,
Compiled Code)
at
org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.java,
Compiled Code)
at
org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:193)
at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java,
Compiled Code)
at
org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2097)
at
org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2029)
at
org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java,
Compiled Code)
at
org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:2894)
at java.lang.Thread.run(Thread.java:479)
That's the code:
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
PrintWriter out = new
PrintWriter (response.getOutputStream());
// The servlet
returns HTML.
response.setContentType("text/html");
out.write("props " +
System.getProperties());
try
{
TransformerFactory tFactory =
org.apache.xalan.processor.TransformerFactoryImpl.newInstance();
// Get the XML input document and the
stylesheet.
Source xmlSource = new
StreamSource(new
URL("file:c:/foo.xml").openStream());
Source
xslSource = new StreamSource(new
URL("file:c:/foo.xsl").openStream());
//
Generate the transformer.
Transformer
transformer =
tFactory.newTransformer(xslSource);
// Perform
the transformation, sending the output to the
response.
transformer.transform(xmlSource, new
StreamResult(out));
}
catch
(Exception e)
{
out.write(e.getMessage());
e.printStackTrace(out);
}
out.close();
}
As I have problems in using xerces instead of
xalan, I tried to refer to the implementation classes directly.
foo.xml and foo.xsl are examples of the
xalan-distribution and they do exist in this directory.
I use Tomcat 3.2.1 and Apache.
Any ideas what might have gone wrong??
That's the minimalistic exapmle, think that must be
O.K:
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="doc">
<result>Das
Ergebnis</result>
<out><xsl:value-of
select="."/></out>
</xsl:template>
</xsl:stylesheet>
Thanks for your help!
Inga