[jdom-interest] XMLOutputter/SAXBuilder
Gary Bentley
gb at opengroup.org
Fri Sep 14 03:35:48 PDT 2001
Right here's my problem folks,
I am dynamically building a chunk of WML and then getting a combination of
SAXBuilder and XMLOutputter to format the string of WML for me. This saves
me a lot of time and lets me not have to worry about the format of the intput
string.
Now the problem:
If I pass this chunk of WML to SAXBuilder and then XMLOutputter (via a
StringReader and StringWriter combination)
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.3//EN"
"http://www.wapforum.org/DTD/wml13.dtd">
<wml>
<card newcontext="true" id="main">
<onevent type="onenterforward">
<go href="#card1"/>
</onevent>
</card>
</wml>
Then what I actually get at the end of it is this:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.3//EN"
"http://www.wapforum.org/DTD/wml13.dtd">
<wml>
<card newcontext="true" id="main" ordered="true">
<onevent type="onenterforward">
<go href="#card1" method="get" sendreferer="false"
enctype="application/x-www-form-urlencoded" />
</onevent>
</card>
</wml>
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.
If this is a bug can it please be fixed, if it's not then can it please be
"switchable" so that I can turn it off, the application I am building needs
to be able to specify ALL the WML, not have it interpreted for me.
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);
Any ideas anyone...
Cheers,
Gary
More information about the jdom-interest
mailing list