[jdom-interest] API Inertia

Elliotte Rusty Harold elharo at metalab.unc.edu
Thu May 3 05:46:28 PDT 2001

At 2:41 AM -0400 5/3/01, Rosen, Alex wrote:
>>  FYI yesterday I realized that I do need to make my own nodes. I'm
>>  thinking about implementing XPointer which adds two new node types:
>>  point and range. These are obviously new classes (Point and Range).
>>  They are also new kinds of nodes in the XPointer data model in
>>  addition to the standard XPath nodes Element, Document, Text,
>>  Comment, etc.
>>  So let's not be so sure that we really don't want client programmers
>>  to create their own Node subclasses/implementations.
>That seems weird to me. Why are these "Nodes" (i.e. XML objects)? Can they be
>added to an XML document? What should XMLOutputter do when it sees them?

Technically, they're locations, not nodes; and according to XPointer 
locations are a superset of nodes (i.e. all nodes are locations but 
not all locations are nodes). On the other hand you do use the 
point() and range() node tests to identify these locations (and those 
are node tests, not location tests). There are some areas of the XML 
family where things get a little weird. This is one of them. I don't 
know that we should embrace the weirdness, but I don't know that we 
should pretend it doesn't exist either.

As to what an XMLOuputter should do when it sees them? I'm not sure. 
It would certainly be easier to handle if the nodes themselves were 
responsible for their own serialization. For points I suspect, no 
output is necessary. Points are zero dimensional. For ranges, I'd 
expect the content of the range to be output, from the beginning of 
the range to the end of the range.

Here's another example of a case where you might want to provide your 
own node subclasses: according to the XML InfoSet each character is 
its own information item. You might plausibly want to make characters 
nodes, though most of the time you probably wouldn't need this.

The problem is that there's more than one plausible data model for an 
XML document. Should JDOM pick one and stick to it? or should JDOM
operate purely at the level of syntax? or should JDOM try to be 
adaptable to multiple data models? These are deep questions and they 
haven't really been addressed. JDOM is sorely lacking a requirements 
document that can be used to answer questions about what is and isn't 
in scope and what methods should and should not be provided.

| 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