[jdom-interest] Re: First impressions and some suggestions

Elliotte Rusty Harold elharo at metalab.unc.edu
Sat Jun 10 06:39:42 PDT 2000


At 1:51 PM -0700 6/9/00, Jason Hunter wrote:
>> Or how about this case:
>>
>> <name><first>Alex</first><last>Chaffee</last></name>
>>
>> Should JDOM insert extra white space between "Alex" and "Chaffee"
>> because that's what most people would initially expect?
>
>Elliotte, you're losing me here.  The code is this.
>
>String first = name.getChild("first").getContent();
>String last = name.getChild("last").getContent();
>

No, the problem code is this. What does

String fullName = name.getContent();

return? The "obvious" answer is "Alex Chaffee"; though that's not 
what JDOM is doing now or what it should do. My point is that the 
obvious answer isn't always the correct answer.

>The question is does
>
><name>
>  <first>
>     Alex
>  </first>
>  <last>
>    Chaffee
>  </last>
><name>
>
>behave the same, or not, for the common case of calling getContent().  I
>think it should because that's what developers expect, and
>getContent(true) can work for those relatively rare cases where you want
>the whitespace.

I don't think these cases are rare. I think they're much more common 
than you expect.

>We are still fully spec compliant.  We just have two calls, one that
>returns surrounding whitespace and one that doesn't.  The one that
>doesn't is less typing because it's more common.  After all, the spec
>says, "Such white space is typically not intended for inclusion in the
>delivered version of the document" and this is a Java-based document
>object model.
>

I disagree that this API is fully spec compliant. I think you're 
telling me that you feel the XML spec is wrong; that white space 
should be less significant than XML 1.0 actually makes it. That 
argument I can see. But I think that even if the XML 1.0 inventors 
made the wrong decision on this point, it's more important to adhere 
to the spec than to try to fix its shortcomings.  The content of an 
element includes white space according to XML 1.0. getContent() 
should return what the XML 1.0 spec says the content is; not some 
bowdlerized construct that's sort of like the content but not quite. 
If you want to provide a utility method so developers don't have to 
call trim(), then that's the one that should have a different name, 
something like getTrimmedContent() or getNormalizedContent().
 

+-----------------------+------------------------+-------------------+
| Elliotte Rusty Harold | elharo at metalab.unc.edu | Writer/Programmer |
+-----------------------+------------------------+-------------------+
|                  The XML Bible (IDG Books, 1999)                   |
|              http://metalab.unc.edu/xml/books/bible/               |
|   http://www.amazon.com/exec/obidos/ISBN=0764532367/cafeaulaitA/   |
+----------------------------------+---------------------------------+
|  Read Cafe au Lait for Java News:  http://metalab.unc.edu/javafaq/ |
|  Read Cafe con Leche for XML News: http://metalab.unc.edu/xml/     |
+----------------------------------+---------------------------------+



More information about the jdom-interest mailing list