[jdom-interest] From JSR-102 comments

Jason Hunter jhunter at collab.net
Fri Jun 15 16:53:42 PDT 2001


Hi Bart,

In testing your code I don't see the problem with Xerces 1.2 or 1.3. 
First, I confirmed boxlayout didn't have the container attribute in the
XML.

% grep boxlayout NT_SubscriberDetailsJPanel.xml
 <boxlayout orientation="X_AXIS"/>
 <boxlayout orientation="Y_AXIS"/>
 <boxlayout orientation="X_AXIS"/>
 ...

Then I ran a TestOutput.java program and saw that the output had the
container attribute added:

% java TestOutput NT_SubscriberDetailsJPanel.xml | grep boxlayout
  <boxlayout orientation="X_AXIS" container="@this" />
  <boxlayout orientation="Y_AXIS" container="@this" />
  <boxlayout orientation="X_AXIS" container="@this" />
  etc

So it looks OK to me.  Here's the little test program:

import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;

public class TestOutput {

  public static void main(String[] args) throws Exception {
    long before, after;

    SAXBuilder b = new SAXBuilder(true);
    Document doc = b.build(args[0]);

    XMLOutputter outp = new XMLOutputter();
    outp.output(doc, System.out);
  }
}

BTW, Crimson doesn't like the files:

Exception in thread "main" org.jdom.JDOMException: Error on line 24 of
document
file:/C:/tmp/jdom/formset/NT_SubscriberDetailsJPanel.xml: Element
"titledborder"
 allows no further input; "justification" is not allowed.

-jh-

Bart Read wrote:
> 
> Gentlemen,
> 
> Thanks for your swift responses, and let me first apologise for my lack of
> clarity.  I also apologise for sending my first e-mail to the wrong place --
> the "Contact" link I found on one of the pages at jdom.org had been
> disabled.
> 
> I used the following code to read in and parse the XML document in question
> using the Apache Xerces SAX parser v1.3.1:
> 
>     public void build(File spec, OutputStream out)
>     {
>         ...
>         ...
>             SAXBuilder builder = new SAXBuilder(true);
>             Document doc = builder.build(spec);
>         ...
>         ...
>     }
> 
> Under these circumstances, and using the attached DTD and XML document the
> resultant Document object does not contain any elements with attributes
> whose default values (if any) have been set -- I'm thinking specifically of
> the 'container' attribute belonging to the 'boxlayout' element.  Note that
> validation is switched on, and that if there is any other validation error
> whilst parsing the document then an exception is thrown, as expected.  Also,
> this is one of those rare things -- an application that will always be using
> validation.
> 
> However, if I run the SAXParserDemo (also attached) from Brett McLaughlin's
> book with validation switched on and all other settings the same (document,
> DTD, parser) then the default values ARE returned as part of the output from
> the parser.  This is what I would expect from a validating parser, although
> obviously it would be completely unreasonable to expect it with validation
> turned off.
> 
> I apologise for harping on about this but I really think that under
> validating conditions JDOM should return all attribute values, including
> default values, because at the end of the day what a default value says is,
> "this attribute is required and if there is no other value specified then it
> must be assigned this default value".  In other words, the document isn't
> valid without it.
> 
> Evidently this isn't the end of the world, because for the moment I can just
> specify a value for the attribute(s) in question within the XML or assume
> the presence of the default value in my code (yuk!).
> 
> Kind regards,
> 
> =================================
> Bart Read
> Senior Developer
> Abbotsbury Software Ltd
> Abbotsbury, DORSET DT3 4JT
> Tel: +44 (0) 1305 871644
> E-mail: bart at wdi.co.uk
> =================================
> ----- Original Message -----
> From: <philip.nelson at omniresources.com>
> To: <jhunter at collab.net>; <jdom-interest at jdom.org>; <bart at wdi.co.uk>
> Sent: Tuesday, June 12, 2001 10:41 PM
> Subject: RE: [jdom-interest] From JSR-102 comments
> 
> >
> > > > I just started using JDOM beta 6 a couple of weeks ago and have been
> > > > very impressed by it's performance and ease of use.
> > > However, I believe
> > > > I may have found a small bug involving attribute default
> > > values.  If I
> > > > specify an attribute with a default value in the DTD, and use the
> > > > corresponding element in a document but without specifying
> > > a value for
> > > > the attribute, then the attribute does not appear in the
> > > element's list
> > > > of attributes.
> > >
> > > The default attributes are added by the parser, and they will
> > > appear if
> > > you build the document using a parser.  You probably built
> > > the document
> > > using constructors, and in that case you got exactly the
> > > elements/attributes you created.  JDOM doesn't look to the
> > > DTD; it does
> > > exactly what you dictate.  Considering that when elements are created
> > > they exist outside a document, and can later move between
> > > documents, it
> > > doesn't make much sense to try to be fancy about default
> > > attribs.  It's
> > > the same with DOM as I understand it.
> >
> > I am not sure what parser this person used or what the dtd actually looked
> > like, but this was exactly the problem some of the xerces parsers seemed
> to
> > have with the svg dtd which included default values in parameter entities.
> >
> > ---------- Automatically inserted by mailhost.wdi.co.uk ------------
> > This message has been scanned for virus, trojans, illegal relays and
> > spam. If you have any comments, problems or questions please do not
> > hesitate to contact:
> > Abbotsbury Software Ltd
> > Tel: +44 1305 871543 Fax: +44 1305 871688
> > Email: postmaster at wdi.co.uk
> > Web: http://www.wdi.co.uk/virus.phtml
> >
> 
>   ------------------------------------------------------------------------
>                   Name: formset.dtd
>    formset.dtd    Type: unspecified type (application/octet-stream)
>               Encoding: quoted-printable
> 
>                                      Name: NT_SubscriberDetailsJPanel.xml
>    NT_SubscriberDetailsJPanel.xml    Type: XML Document (text/xml)
>                                  Encoding: quoted-printable
> 
>                          Name: SAXParserDemo.java
>    SAXParserDemo.java    Type: JavaScript Program (application/x-javascript)
>                      Encoding: quoted-printable



More information about the jdom-interest mailing list