[jdom-interest] Creating a pure text file using XSL

Laurent Bihanic laurent.bihanic at atosorigin.com
Fri Nov 9 00:28:52 PST 2001


Hi,

You can not use JDOMResult to get anything but XML output from an XSLT 
transformation.
Thus, is your output is either "text" ot "html", you must use a StreamResult.

This is why you get this EmptyStackException from JDOMResult.

Laurent


Jay Burgess wrote:

> I've asked this question on an XSL list, and now it's not clear to me 
> whether it's an XSL issue, or an issue with my use of JDOM.  Here goes:
> 
> I've got the following code snippet in my .XSL file:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
> version="1.0">
> <xsl:output method="text" indent="yes" omit-xml-declaration="yes" />
> <xsl:param name="FILENAME"/>
> <xsl:template match="page">
>     <xsl:choose>
>         <xsl:when test="$FILENAME != ''">
>             <p>http://YOURMACHINE/<xsl:value-of select="$FILENAME"/></p>
>         </xsl:when>
>         <xsl:otherwise>...
> 
> It outputs something like:
> 
> <p>http://YOURMACHINE/page1.html</p>
> <p>http://YOURMACHINE/page2.html</p>
> <p>http://YOURMACHINE/page3.html</p>
> 
> But what I really want is just a plain text file containing one URL 
> string per line, without the <p></p>, like:
> 
> http://YOURMACHINE/page1.html
> http://YOURMACHINE/page2.html
> http://YOURMACHINE/page3.html
> 
> (Again, these aren't HREF's. They're simply URL strings, with no 
> XML/HTML markup around them.)
> 
> Is this possible with XSL?
> 
> Here's the relevant Java code using JDOM, in case that's where I'm doing 
> something wrong:
> 
>           JDOMSource source = new JDOMSource(new 
> Document(element.detach()));
>           JDOMResult result = new JDOMResult();
>           XMLOutputter outputter = new XMLOutputter("    ", true);
>           outputter.setTextNormalize(true);
>           outputter.setOmitDeclaration(true);
>           outputter.setNewlines(false);
>           transformer.setParameter("FILENAME", fileName);
>           transformer.transform(source, result);
>           outputter.output(result.getDocument(), packageFile);
> 
> Finally, for reference, if I remove the <p></p> in my XSL file, I get a 
> stack trace, which starts off like:
> 
>      [java] javax.xml.transform.TransformerException
>      [java]     at 
> org.apache.xalan.transformer.TransformerImpl.transformNode(Tr
> ansformerImpl.java:1151)
>      [java]     at 
> org.apache.xalan.transformer.TransformerImpl.transform(Transf
> ormerImpl.java:590)
>      [java]     at 
> org.apache.xalan.transformer.TransformerImpl.transform(Transf
> ormerImpl.java:1037)
>      [java]     at 
> org.apache.xalan.transformer.TransformerImpl.transform(Transf
> ormerImpl.java:1015)
>      [java]     at XMLConfig.parse(Unknown Source)
>      [java]     at XMLConfig.parse(Unknown Source)
>      [java]     at XMLConfig.parse(Unknown Source)
>      [java]     at XMLConfig.main(Unknown Source)
>      [java] ---------
>      [java] java.util.EmptyStackException
>      [java]     at java.util.Stack.peek(Stack.java:82)
>      [java]     at 
> org.jdom.input.SAXHandler.characters(SAXHandler.java:483)
>      [java]     at 
> org.xml.sax.helpers.XMLFilterImpl.characters(XMLFilterImpl.ja
> va:614)
>      [java]     at 
> org.apache.xalan.transformer.ResultTreeHandler.characters(Res
> ultTreeHandler.java:471)
>      [java]     at 
> org.apache.xalan.templates.ElemTextLiteral.execute(ElemTextLi
> teral.java:256)
>      [java]     at 
> org.apache.xalan.transformer.TransformerImpl.executeChildTemp
> lates(TransformerImpl.java:2096)
>      [java]     at 
> org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java
> :164)
>      [java]     at 
> org.apache.xalan.templates.ElemApplyTemplates.transformSelect
> edNodes(ElemApplyTemplates.java:423)
>      [java]     at 
> org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApp
> lyTemplates.java:226)
>      [java]     at 
> org.apache.xalan.transformer.TransformerImpl.executeChildTemp
> lates(TransformerImpl.java:2096)
>      [java]     at 
> org.apache.xalan.transformer.TransformerImpl.applyTemplateToN
> ode(TransformerImpl.java:1927)
>      [java]     at 
> org.apache.xalan.transformer.TransformerImpl.transformNode(Tr
> ansformerImpl.java:1120)
>      [java]     at 
> org.apache.xalan.transformer.TransformerImpl.transform(Transf
> ormerImpl.java:590)
>      [java]     at 
> org.apache.xalan.transformer.TransformerImpl.transform(Transf
> ormerImpl.java:1037)
>      [java]     at 
> org.apache.xalan.transformer.TransformerImpl.transform(Transf
> ormerImpl.java:1015)
>      [java]     at XMLConfig.parse(Unknown Source)
>      [java]     at XMLConfig.parse(Unknown Source)
>      [java]     at XMLConfig.parse(Unknown Source)
>      [java]     at XMLConfig.main(Unknown Source)
>      [java] javax.xml.transform.TransformerException
>      [java]     at 
> org.apache.xalan.transformer.TransformerImpl.transformNode(Tr
> ansformerImpl.java:1151)
>      [java]     at 
> org.apache.xalan.transformer.TransformerImpl.transform(Transf
> ormerImpl.java:590)
>      [java]     at 
> org.apache.xalan.transformer.TransformerImpl.transform(Transf
> ormerImpl.java:1037)
>      [java]     at 
> org.apache.xalan.transformer.TransformerImpl.transform(Transf
> ormerImpl.java:1015)
>      [java]     at XMLConfig.parse(Unknown Source)
>      [java]     at XMLConfig.parse(Unknown Source)
>      [java]     at XMLConfig.parse(Unknown Source)
>      [java]     at XMLConfig.main(Unknown Source)
>      [java] ---------
>      [java] java.util.EmptyStackException
>      [java]     at java.util.Stack.peek(Stack.java:82)
>      [java]     at 
> org.jdom.input.SAXHandler.characters(SAXHandler.java:483)
>      [java]     at 
> org.xml.sax.helpers.XMLFilterImpl.characters(XMLFilterImpl.ja
> va:614)
> 
> Thanks.
> 
> Jay





More information about the jdom-interest mailing list