xsl-list
[Top] [All Lists]

RE: [xsl] Transformer adds unwanted newlines

2008-10-03 09:45:40
You're doing a two-stage transformation here: first a transformation using a
stylesheet, which then feeds its output in the form of a SAXSource to a JAXP
identity transform which converts the SAXSource to a StreamResult.

I don't know why you're doing this or why it adds newlines, but it does mean
that the xsl:output is going to be ignored because the output of the
stylesheet is not serialized.

What happens if you remove the (apparently unnecessary) second step?

Michael Kay
http://www.saxonica.com/
 

-----Original Message-----
From: John English [mailto:je(_at_)brighton(_dot_)ac(_dot_)uk] 
Sent: 03 October 2008 13:23
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Transformer adds unwanted newlines

David Carlisle wrote:
Anyone got any ideas what I can do about this?
but ignoring indent=no sounds less likely, are you sure you 
don't have 
another xsl:output somewhere, or that you are not outputing an XMl 
tree that is then being serialised by some other JDK methord rather 
than being serialised by XSLT?

No other xsl:output, and all I do in the transform is this:

   SAXParserFactory spf = SAXParserFactory.newInstance();
   spf.setNamespaceAware(true);
   SAXParser parser = spf.newSAXParser();
   reader = parser.getXMLReader();
   stf = (SAXTransformerFactory) TransformerFactory.newInstance();
   String s = serializeTree();
   System.out.println("DEBUG: " + s);     // <------- DEBUG
   InputSource input = new InputSource(new StringReader(s));
   filter = stf.newXMLFilter(new StreamSource(stylesheet));
   filter.setParent(reader);
   StreamResult result = new StreamResult(response.getWriter());
   Transformer transformer = stf.newTransformer();
   SAXSource transformSource = new SAXSource(filter, input);
   transformer.transform(transformSource, result);

At the point where the DEBUG output is, the serialized tree 
is as I've described it; the extra newlines appear in the 
output also as described.

In the meantime I have kludged up a workaround when I serialise the
tree:

   if (tagName.equals("pre")) {
     d = d.replaceAll("<br[^>]*>","\n");
   }

This works but it offends my sensibilities!

Thanks,

----------------------------------------------------------------------
  John English              | mailto:je(_at_)brighton(_dot_)ac(_dot_)uk
  Senior Lecturer           | http://www.it.bton.ac.uk/staff/je
  School of Computing & MIS | "Those who don't know their history
  University of Brighton    |  are condemned to relive it" (Santayana)
----------------------------------------------------------------------

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--