[jdom-interest] Transformation differences when using a JDOMResult
vs. a DOMResult
Jason Hunter
jhunter at collab.net
Fri Jun 15 17:40:11 PDT 2001
Please try now, Michael, with the latest in CVS. I think we've got it
fixed.
-jh-
> Sexton Michael wrote:
>
> Hi,
>
> I have a need to transform an XML document into an XSL document, in
> preparation for a final transformation on an XML document.
>
> I have written a test class that transforms a file (empty.xml) using
> another file (test.xsl). The Document returned is different, and
> incorrect, if I use a JDOMResult instead of a DOMResult.
>
> Using DOMResult returns:
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> <foo:myelement xmlns:foo="http://www.mywebsite.org">content blah
> blah</foo:myelement>
>
> Using JDOMResult returns:
> <?xml version="1.0" encoding="UTF-8"?>
> <foo:myelement xmlns:foo="http://www.mywebsite.org"
> foo="http://www.mywebsite.org">content blah blah</foo:myelement>
>
> Notice the extra attribute returned using the JDOMResult
> (foo="http://www.mywebsite.org").
>
> Is there a way to make the JDOMResult not have the extra attribute?
>
> Thanks in advance,
>
> Michael
>
> Example info below
>
> I am using jdk 1.3.1, xerces 1.3, xalan 2.1.0, and I have downloaded
> the latest code from cvs.jdom.org this morning.
>
> Here is my empty.xml file:
> ========================================================================
>
> <!-- edited with XML Spy v3.5 NT (http://www.xmlspy.com) by Maggie
> (OGI) -->
> <root>empty</root>
> ========================================================================
>
> Here is my test.xsl file:
> ========================================================================
>
> <?xml version="1.0"?>
> <xsl:stylesheet
> version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
> xmlns:foo="http://www.mywebsite.org">
> <xsl:template match="/">
> <foo:myelement>content blah blah</foo:myelement>
> </xsl:template>
> </xsl:stylesheet>
> ========================================================================
>
> Here is my test program:
> ========================================================================
>
> // Imported TraX classes
> import javax.xml.transform.TransformerFactory;
> import javax.xml.transform.Transformer;
> import javax.xml.transform.stream.StreamSource;
> import javax.xml.transform.TransformerException;
> import javax.xml.transform.TransformerConfigurationException;
> import javax.xml.transform.dom.DOMResult;
>
> // Imported java.io classes
> import java.io.IOException;
>
> // Imported java.net classes
> import java.net.URL;
>
> // Imported JDOM classes
> import org.jdom.Document;
> import org.jdom.transform.JDOMResult;
> import org.jdom.output.XMLOutputter;
>
> // Imported Serializer classes
> import org.apache.xalan.serialize.Serializer;
> import org.apache.xalan.serialize.SerializerFactory;
>
> import org.apache.xalan.templates.OutputProperties;
>
> /**
> * This class tests the transformation of an XSL file into another XSL
> file.
> *
> * It compares the differences between using a JDOMResult vs. a
> DOMResult.
> *
> * To use a DOMResult: java DOM2DOMTest
> * To use a JDOMResult: java DOM2DOMTest JDOM
> */
> public class DOM2DOMTest
> {
> public static void main(String[] args)
> throws TransformerException,
> TransformerConfigurationException,
> IOException
> {
> URL xslUrl = new URL("file:test.xsl");
> StreamSource xslDomSource = new
> StreamSource(xslUrl.openStream());
> xslDomSource.setSystemId(xslUrl.getPath());
>
> URL xmlUrl = new URL("file:empty.xml");
> StreamSource xmlDomSource = new
> StreamSource(xmlUrl.openStream());
> xmlDomSource.setSystemId(xmlUrl.getPath());
>
> TransformerFactory tFactory =
> TransformerFactory.newInstance();
> Transformer transformer =
> tFactory.newTransformer(xslDomSource);
>
> if (args.length == 1 &&
> args[0].equalsIgnoreCase("JDOM"))
> {
> outputUsingJDOM(transformer, xmlDomSource);
> }
> else
> {
> useStandardOutput(transformer, xmlDomSource);
> }
> }
>
> private static void useStandardOutput(Transformer transformer,
> StreamSource xmlDomSource)
> throws TransformerException, IOException
> {
> DOMResult domResult = new DOMResult();
> transformer.transform(xmlDomSource, domResult);
>
> Serializer serializer =
> SerializerFactory.getSerializer
>
> (OutputProperties.getDefaultMethodProperties("xml"));
>
> serializer.setOutputStream(System.out);
>
> serializer.asDOMSerializer().serialize(domResult.getNode());
> }
>
> private static void outputUsingJDOM(Transformer transformer,
> StreamSource xmlDomSource)
> throws TransformerException, IOException
> {
> JDOMResult domResult = new JDOMResult();
>
> transformer.transform(xmlDomSource, domResult);
> XMLOutputter outputter = new XMLOutputter();
> outputter.output(domResult.getDocument(), System.out);
>
> }
> }
> ========================================================================
More information about the jdom-interest
mailing list