[jdom-interest] XMLOutputter/SAXBuilder

Brett McLaughlin brett at newinstance.com
Fri Sep 14 06:45:45 PDT 2001

on 9/14/01 5:35 AM, Gary Bentley at gb at opengroup.org wrote:

> Now there are a few problems here, the main one (and I consider this either a
> major bug or undocumented feature...take your pick) is that either SAXBuilder
> (my current No 1 suspect and I haven't had chance to do a full investigation)
> or XMLOutputter is adding in attributes to various elements, for example the
> <card> element now has an "ordered" attribute that I certainly didn't ask
> for, and the <go> element has the "sendreferer", "method" and "enctype"
> attributes added.  It appears to be applying default attributes that are
> specified in the DTD.  My suspicion is that one of the classes is examining
> the DTD and being "clever", which is nice, but not the documented or required
> behaviour.  

It's actually not JDOM at all. SAX reports default attributes on an element,
and does not give any indication that these attributes /are/ default. In
other words, it's a "bug/feature" of SAX 2.0 itself. I don't know of anyway
to turn that processing off, and since SAX doesn't yet provide any
additional typing or related information about default vs. declared
attributes, I'm not sure how we could take care of it if we wanted to.

If you've got any ideas, I'm certainly all ears! However, I will point out
that the DTD specifying these as default attributes (actually, IMPLIED),
means that your application should /not/ choke on them, because they are
essentially "on" the element anyway. So you may have a bigger problem, such
as with WML documents that someone else creates.

> A further problem is that there seems to be a newline added after the <go>
> element and the end of the <onevent> element.  I know for there are no
> newlines present in the string prior to conversion since I strip them with:
> wml = wml.replace ('\n', ' ');
> And then use:
> XMLOutputter xout = new XMLOutputter ();
> xout.setIndent ("  ");
> xout.setNewLines (true);
> xout.setTextNormalize (true);

Alex Chaffee is our XMLOutputter superhero, so maybe he will comment here.
Alex, any ideas?

Brett Mclaughlin       <http://www.newInstance.com>
Lutris Technologies    <http://www.lutris.com>
Author, "Java and XML" <http://www.oreilly.com/catalog/javaxml2>

More information about the jdom-interest mailing list