DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=23446>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=23446 Transformation produces different results with DOM and Stream sources Summary: Transformation produces different results with DOM and Stream sources Product: XalanJ2 Version: 2.5 Platform: PC OS/Version: All Status: NEW Severity: Normal Priority: Other Component: Xalan AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] CC: [EMAIL PROTECTED] When a node being used in the tranformation is empty the DOMSource and Stream source produce different results. For example - Input Xml - ------------------------- <Root> <SampleData attr1="" attr2="b" attr3="c" /> </Root> ------------------------- XSL - ------------------------- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" > <xsl:output method="xml" indent="yes" xalan:indent-amount="4" xmlns:xalan="http://xml.apache.org/xslt"/> <xsl:template match="SampleData"> <SampleData> <attr1><xsl:value-of select="@attr1" /> </attr1> <attr2><xsl:value-of select="@attr2" /> </attr2> <attr3><xsl:value-of select="@attr3" /> </attr3> </SampleData> </xsl:template> </xsl:stylesheet> ------------------------- Transformer class - ------------------------- import java.io.*; import javax.xml.parsers.*; import javax.xml.transform.*; import javax.xml.transform.dom.*; import javax.xml.transform.stream.*; import org.w3c.dom.*; import org.xml.sax.*; public class SampleTransform { public static void main(String[] args) throws Exception { String sampleFileName="sample-input-data.xml"; TransformerFactory tFactory = TransformerFactory.newInstance(); DocumentBuilder builder = DocumentBuilderFactory.newInstance ().newDocumentBuilder(); InputSource inputSource = new InputSource(new FileReader(sampleFileName)); Document document = builder.parse(inputSource); document.normalize(); DOMSource domSource = new DOMSource(); domSource.setNode(document); // Create the transformer Transformer transformer = tFactory.newTransformer(new StreamSource ("sample-transform.xsl")); // transform the input xml using stream source transformer.transform(new StreamSource(sampleFileName), new StreamResult(new FileOutputStream("output-using-stream.out"))); // transform the input xml using dom source transformer.transform(domSource, new StreamResult(new FileOutputStream ("output-dom.out"))); System.out.println("check output files output-dom.out and output- stream.out"); } } ------------------------- The output using the stream source is - ------------------------- <?xml version="1.0" encoding="UTF-8"?> <SampleData> <attr1/> <attr2>b</attr2> <attr3>c</attr3> </SampleData> ------------------------- Output using the dom source is ------------------------- <?xml version="1.0" encoding="UTF-8"?> <SampleData> <attr1> </attr1> <attr2>b</attr2> <attr3>c</attr3> </SampleData> ------------------------- Please note the extra new line character in the "attr1" element. The dom source and stream source should produce the same output. However, in the case shown about, this does not happen. Is this a bug?
