[jdom-interest] Bug in JDOMSource or maybe SAXoutputter.

Ken Rune Helland kenh at csc.no
Thu Jun 7 03:19:26 PDT 2001


Hello.

Found what I think is a bug in JDOMSource or maybe SAXoutputter
used inside JDOMSource (and i downloed the daily sourcedrop 15
minutes ago :-)  ).

when XSL transfoming from a JDOM Document object using JDOMSource
a namespace declaraiton does not follow to the target. This namespace
declaration is not for the element it is declared in but for a
attribute used somewhere in the document.

I will try to find this bug, but SAX and XSL is not my
strong point so if anyone who know this well can beat me to
it i will appreciate it.

Currently i work aroud it using StreamSource since at this
time in the program I have both the JDOM and serialized
version of the xml-document but using JDOMSource cuts
30-60% of the transfomation time in my tests compared
to StreamSource.


Best Regards
KenR


A stripped down exsample showing the bug:

Source document:

<?xml version="1.0" encoding="ISO-8859-1"?>
<ROOT foo:bar="Foobar" xmlns:foo="http://www.foo.com" >
	<ELEMENT foo:bar="barfoo">Text</ELEMENT>
</ROOT>

Stylesheet:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
   <xsl:output method="xml" indent="yes"/>

   <xsl:template match="/">
	<xsl:apply-templates/>
   </xsl:template>

   <xsl:template match="ROOT">
	<xsl:copy>
		<xsl:copy-of select ="@*"/>
		<xsl:apply-templates select ="ELEMENT" />	
	</xsl:copy>	
   </xsl:template>

   <xsl:template match="ELEMENT">
	<xsl:copy>
		<xsl:copy-of select ="@*"/>
		<xsl:value-of select="." />	
	</xsl:copy>	
   </xsl:template>


</xsl:stylesheet>

Result using StreamSource (this is what I want):

<?xml version="1.0" encoding="iso-8859-1"?>
<ROOT xmlns:foo="http://www.foo.com" foo:bar="Foobar">
<ELEMENT foo:bar="barfoo">Text</ELEMENT>
</ROOT>


Result parsing into JDOM document and using JDOMSource:

<?xml version="1.0" encoding="iso-8859-1"?>
<ROOT foo:bar="Foobar">
<ELEMENT foo:bar="barfoo">Text</ELEMENT>
</ROOT>

The declaration on the "foo" prefix to the "http://www.foo.com"
namespace is missing.




More information about the jdom-interest mailing list