[jdom-interest] RE: Something Odd in JDomResult (StreamResult works fine) (?)
John caron
caron at unidata.ucar.edu
Fri Aug 3 13:44:00 PDT 2001
"Kevin Williams" <kwilliams at effsols.com> asked:
I am seeing the same problem; I have triple checked the jars on my classpath. Did you find the cause of this problem?
> I do have an </xsl:stylesheet> in the code, I just forgot to copy it into
> the email.
>
> I changed my code to use a StreamResult instead of a JDom result (which is
> better for my code anyway, thanks). But now I get a new error. I'm using
> the xalan.jar that came with jdomb7. Any more clues?
>
> Thanks!
>
> Kevin
>
>
> java.lang.NoSuchMethodError
> at
> org.apache.xpath.axes.ChildIterator.nextNode(ChildIterator.java:140)
> at
> org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.ja
> va:428)
> at
> org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.jav
> a:193)
> at
> org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.ja
> va:495)
> at
> org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.jav
> a:193)
> at
> org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform
> erImpl.java:2154)
> at
> org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform
> erImpl.java:2097)
> at
> org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:
> 739)
> at
> org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.ja
> va:495)
> at
> org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.jav
> a:193)
> at
> org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform
> erImpl.java:2154)
> at
> org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(Transform
> erImpl.java:2097)
> at
> org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(Transformer
> Impl.java:2029)
> at
> org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.j
> ava:1189)
> at
> org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:2894)
> at java.lang.Thread.run(Thread.java:484)
>
>
>
> > -----Original Message-----
> > From: jdom-interest-admin at jdom.org
> > [mailto:jdom-interest-admin at jdom.org]On Behalf Of daniele rizzi
> > Sent: Friday, July 20, 2001 2:45 AM
> > To: Kevin Williams; jdom-interest at jdom.org
> > Subject: Something Odd in JDomResult (StreamResult works fine) (?) was
> > R: [jdom-interest] XML and XSL, fine using xt command line parser, but
> > java.util.EmptyStackException in JDom
> >
> >
> >
> > Dear all,
> > if you mind running the following code, you'll be amazed discovering
> > that a Transform into StreamResult works fine but the very same Transform
> > into a JDomResult falls into a java.util.EmptyStackException
> >
> > any hint ?
> > daniele.rizzi at largesys.it (ps. SAXResult works!, but it's not so useful)
> >
> >
> > ---- begin of code ----
> >
> > package dany;
> >
> > import org.jdom.*;
> > import org.jdom.input.*;
> > import org.jdom.output.*;
> > import org.jdom.transform.*;
> >
> > import org.xml.sax.*;
> > import org.xml.sax.helpers.*;
> >
> > import java.io.*;
> > import java.util.*;
> > import java.sql.*;
> >
> > import javax.xml.transform.*;
> > import javax.xml.transform.sax.*;
> > import javax.xml.transform.dom.*;
> > import javax.xml.transform.stream.*;
> >
> > import oracle.xml.parser.v2.* ;
> >
> > public class ErrorXsl {
> >
> > public String xmlData = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> " +
> > "<TemplateBody><Free_Form_Text>Ref#: </Free_Form_Text>" +
> > "end of template</TemplateBody>";
> >
> > public String xslData = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> " +
> > "<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" " +
> > " version=\"1.0\"> " +
> > "<xsl:template match=\"TemplateBody\"> "+
> > " Dear , <xsl:apply-templates/> Thank you for your
> > business.</xsl:template> "+
> > " </xsl:stylesheet>";
> >
> > /**
> > * Constructor
> > */
> >
> > public ErrorXsl() {
> >
> >
> > try {
> >
> > //1_ open xml
> >
> > StringReader sr = new StringReader(xmlData);
> > SAXBuilder saxbuilder = new SAXBuilder(
> > "oracle.xml.parser.v2.SAXParser", false);
> >
> > Document docXml = saxbuilder.build(sr);
> > sr.close();
> >
> > System.out.println(printDocument(docXml));
> >
> > //2_ open xsl
> >
> > sr = new StringReader(xslData);
> >
> > SAXSource ss = new SAXSource( new InputSource(sr));
> > Transformer transformer =
> > TransformerFactory.newInstance().newTransformer(ss);
> >
> >
> > // this works
> > //StreamResult outDoc = new StreamResult(new
> > File("c:\\pippo.txt"));
> >
> > // this works too!
> > //SAXResult outDoc = new SAXResult(new DefaultHandler());
> >
> > // this not!
> > JDOMResult outDoc = new JDOMResult();
> >
> >
> > transformer.transform(new JDOMSource(docXml), outDoc);
> >
> > }
> > catch(Exception ex) {
> > System.out.println("EX:"+ex.getMessage());
> > ex.printStackTrace();
> >
> > }
> >
> > }
> >
> >
> > }
> >
> > /**
> > * main
> > */
> > public static void main(String[] args) {
> > ErrorXsl errorXsl = new ErrorXsl();
> > }
> > }
> > ---- end of code ----
> >
> >
> > -----Messaggio originale-----
> > Da: jdom-interest-admin at jdom.org
> > [mailto:jdom-interest-admin at jdom.org]Per conto di Kevin Williams
> > Inviato: venerdì 20 luglio 2001 0.42
> > A: jdom-interest at jdom.org
> > Oggetto: [jdom-interest] XML and XSL, fine using xt command line parser,
> > but java.util.EmptyStackException in JDom
> >
> >
> > Sorry for the length, but I wanted to make sure there was enough
> > information
> > to determine what the error is. When I transform the xml with
> > the xsl from
> > the command line, it works fine. When using JDom (code snippet
> > at bottom) I
> > get an exception. I'm new to XSL (started yesterday :) ) so it may be a
> > simple error. Thanks for your help.
> >
> > Here is the error I get when attempting to transform an xml string using a
> > simple stylesheet:
> >
> > javax.xml.transform.TransformerException: java.util.EmptyStackException
> > at
> > org.apache.xalan.transformer.TransformerImpl.transformNode(Transfo
> rmerImpl.j
> > ava:1212)
> > at
> > org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.j
> ava:2894)
> > at java.lang.Thread.run(Thread.java:484)
> > ---------
> > java.util.EmptyStackException
> > at java.util.Stack.peek(Stack.java:82)
> > at org.jdom.input.SAXHandler.characters(SAXHandler.java:483)
> > at
> > org.xml.sax.helpers.XMLFilterImpl.characters(XMLFilterImpl.java:614)
> > at
> > org.apache.xalan.transformer.ResultTreeHandler.characters(ResultTr
> eeHandler.
> > java:446)
> > at
> > org.apache.xalan.templates.ElemTextLiteral.execute(ElemTextLiteral
> .java:233)
> > at
> > org.apache.xalan.templates.ElemForEach.transformSelectedNodes(Elem
> ForEach.ja
> > va:495)
> > at
> > org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTem
> plates.jav
> > a:193)
> > at
> > org.apache.xalan.transformer.TransformerImpl.executeChildTemplates
> > (Transform
> > erImpl.java:2154)
> > at
> > org.apache.xalan.transformer.TransformerImpl.executeChildTemplates
> > (Transform
> > erImpl.java:2097)
> > at
> > org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(T
> ransformer
> > Impl.java:2029)
> > at
> > org.apache.xalan.transformer.TransformerImpl.transformNode(Transfo
> rmerImpl.j
> > ava:1189)
> > at
> > org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.j
> ava:2894)
> > at java.lang.Thread.run(Thread.java:484)
> >
> > +++++++++++++++++++++++++++++++++++++++
> > the XML source:
> > <?xml version="1.0" encoding="UTF-8"?>
> > <TemplateBody><Free_Form_Text>Ref#: </Free_Form_Text><ref_number>
> > #[ref_number]
> > <!-- This displays the reference number. -->
> > </ref_number><Free_Form_Text>
> > </Free_Form_Text><Free_Form_Text>PositionType:
> > </Free_Form_Text><position_type>
> > #[position_type]
> > <!-- This displays the current position type. -->
> > </position_type><Free_Form_Text>
> > </Free_Form_Text><Free_Form_Text>Product ID: </Free_Form_Text><product_id>
> > #[product_id]
> > <!-- This displays the current product ID. -->
> > </product_id><Free_Form_Text>
> > </Free_Form_Text><Free_Form_Text>Product Type:
> > </Free_Form_Text><product_type>
> > #[product_type]
> > <!-- This displaysthe current product type. -->
> > </product_type><Free_Form_Text>
> > </Free_Form_Text><Free_Form_Text>Ref# (again):
> > </Free_Form_Text><ref_number>
> > #[ref_number]
> > <!-- This displays the reference number. -->
> > </ref_number><Free_Form_Text>
> > </Free_Form_Text><Free_Form_Text>Product ID (again):
> > </Free_Form_Text><product_id>
> > #[product_id]
> > <!-- This displays the current product ID. -->
> > </product_id><Free_Form_Text>
> > </Free_Form_Text><Free_Form_Text>Ref# (yet again):
> > </Free_Form_Text><ref_number>
> > #[ref_number]
> > <!-- This displays the reference number. -->
> > </ref_number><Free_Form_Text>
> > </Free_Form_Text><Free_Form_Text>
> > </Free_Form_Text></TemplateBody>
> >
> > ++++++++++++++++++++++++++++++++++++++++++++++++++++
> > XSL template:
> > <?xml version="1.0" encoding="UTF-8"?>
> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> > version="1.0">
> > <xsl:template match="TemplateBody">
> > Dear #[customer],
> >
> > <xsl:apply-templates/>
> >
> > Thank you for your business.
> >
> > Sincerely,
> >
> > #[Preparer]
> > </xsl:template>
> > ++++++++++++++++++++++++++++++++++++++++++++++++++++
> > and the code that runs it:
> > org.jdom.Document jdom =
> > ((JDomStyledDocument)bodyTextArea.getDocument()).generateJDom();
> >
> > StringReader stylesheet = new StringReader(letterLayout);
> >
> > try {
> > Transformer transformer = TransformerFactory.newInstance()
> > .newTransformer(new
> > StreamSource(stylesheet));
> > JDOMResult out = new JDOMResult();
> > transformer.transform(new JDOMSource(jdom), out);
> > org.jdom.Document outdoc = out.getDocument();
> >
> >
> > ESIJDomTreeModel tempModel = new ESIJDomTreeModel(outdoc);
> > try {
> > String xmlStr = tempModel.generateXMLString();
> > letterTextPane.setText(xmlStr);
> > } catch (ESIException ex) {
> > new ESIExceptionDialog(null, ex);
> > }
> >
> > } catch (TransformerException e) {
> > //throw new JDOMException("XSLT Trandformation failed", e);
> > ESILog.getLog().trace("XXXXXXXXXXXXX transform failed", e);
> > }
> >
> > _______________________________________________
> > To control your jdom-interest membership:
> > http://lists.denveronline.net/mailman/options/jdom-interest/yourad
> dr at yourhos
> t.com
>
> _______________________________________________
> To control your jdom-interest membership:
> http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhos
> t.com
>
> _______________________________________________
> To control your jdom-interest membership:
> http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhost.com
Regards, John
More information about the jdom-interest
mailing list