[jdom-interest] API Inertia

Elliotte Rusty Harold elharo at metalab.unc.edu
Wed May 2 06:11:51 PDT 2001

At 10:34 AM +0100 5/2/01, Kenworthy, Edward wrote:
>Have to admit, I find this a little confusing. I really don't see why node
>!= Element. Everything else is icing on the Element.

A document is not an element but it's a node.
A comment is not an element but it's a node.
A processing instruction is not an element but it's a node.
A string is not an element but it's a node.

You can argue that attributes aren't nodes. Start tags and end tags 
clearly aren't nodes. But everything else is clearly a node, not just 
a part of an element.

Here's another way of looking at it: We can model an XML document 
very cleanly as a tree. A tree contains nodes and connections between 
them. By doing this we can use depth-first search, breadth-first 
search, inorder, preorder, and post-order traversals, balancing, and 
in general make use of all the wonderful tree algorithms we learned 
about in CS201 Data Structures. It's a straight-forward simple model 
that's familiar to programmers and easy to support and understand.

Or we can say that XML documents really aren't trees; that they're 
some strange amalgam of seven different types of things with 
complicated relationships between the different parts. Of course XML 
documents are not simply trees, and there are additional constraints 
like an Element can't contain a Document. However, we can build these 
constraints on top of a clean tree model using nodes, or we can throw 
it together as a random hodge-podge of classes. We have no 
mathematical underpinning to back us up. We have no well-understood 
data model. And we give up conceptual compatibility with all the 
other XML specs that do see XML documents as trees (XML InfoSet, 
XPath, XSLT, XPointer, XInclude, Schemas, TREX, etc.)

Clearly I prefer the first approach: define a solid tree model fully 
compatible with the XPath/XML Infoset data model, and layer the 
additional constraints on top of that.

| 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