[jdom-interest] Last call: getChild/getChildren versus getChildElement/getChildElements

Elliotte Rusty Harold elharo at metalab.unc.edu
Fri Feb 6 07:58:09 PST 2004


At 6:28 PM -0800 2/5/04, Jason Hunter wrote:

>Yes, but the child axis still has elements as the principal node 
>type, which is why $foo/child::bar returns bar elements and not bar 
>PIs.  Thus getChildren("bar") can be justified to return bar 
>elements.

getChildren("bar") I agree, but getChildren() only returning elements 
is wrong, wrong, wrong. Did I mention it was wrong? It is 
inconsistent with the usage of the word "children" in the XML 1.0 
Recommendation.  It is inconsistent with the usage of children in 
DOM. It is brutally inconsistent with the definition of the children 
property in the XML Infoset:

[children] An ordered list of child information items, in document 
order. This list contains element, processing instruction, unexpanded 
entity reference, character, and comment information items, one for 
each element, processing instruction, reference to an unprocessed 
external entity, data character, and comment appearing immediately 
within the current element. If the element is empty, this list has no 
members.

The method does not do what XML knowledgeable developers expect. It 
is confusing in both directions. Programmers who know XML will expect 
it returns all the children, not just the elements. Programmers who 
start with JDOM will learn this mistaken usage of the word children, 
and get confused when they use other technologies like XPath or 
XQuery that do not share this notion of children. This needs to be 
fixed now.

We've been around this circle before. We could (and should) have 
fixed it years ago. But we keep pussy-footing around, worrying about 
it the very temporary pain that will be caused if we change it. It's 
still broken. It still needs to be fixed. Fix it now, once and for 
all, and forget about it. Rip the band-aid off in one fell swoop. It 
will hurt a lot less to do that now than to spend the next ten years 
living with the ugly sore of this inconsistency.
-- 

   Elliotte Rusty Harold
   elharo at metalab.unc.edu
   Effective XML (Addison-Wesley, 2003)
   http://www.cafeconleche.org/books/effectivexml            
   http://www.amazon.com/exec/obidos/ISBN%3D0321150406/ref%3Dnosim/cafeaulaitA 



More information about the jdom-interest mailing list