[xsl] Using a TransformerHandler strips comments but a Transformer keeps them

Subject: [xsl] Using a TransformerHandler strips comments but a Transformer keeps them
From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx>
Date: Wed, 13 Feb 2008 10:54:02 +0000
Does anyone know why a transform using a TransformerHandler strips
comments but the "stardard" Tranformer keeps them.

For example:

sourceXML:

<?xml version="1.0" encoding="UTF-8"?>
<!-- test outer comment -->
<foo> <!-- inner comment --> foo</foo>

The stylesheet is the identity transform.

The first transformation technique is using a TransformerHandler:

SAXTransformerFactory stf =
(SAXTransformerFactory)TransformerFactory.newInstance();;
TransformerHandler handler = stf.newTransformerHandler(new
StreamSource(stylesheet));
handler.setResult(new StreamResult(System.out));
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
xmlReader.setContentHandler(handler);
xmlReader.parse(sourceXML.toURI().toString());

The second is using a Transformer:

stf.newTransformer(new StreamSource(stylesheet)).
		transform(new StreamSource(sourceXML), new StreamResult(System.out));

Produces this output:

TransformerHandler:
<?xml version="1.0" encoding="UTF-8"?><foo>  foo</foo>

Transformer:
<?xml version="1.0" encoding="UTF-8"?><!-- test outer comment --><foo>
<!-- inner comment --> foo</foo>


I would expect the two to produce identical results.  Has anyone come
across this before?


thanks
andrew

Current Thread