RE: DOM Level 2 Core Features

Don Park wrote,
> >4. Non-live iterators for a few, well-chosen, tree
> >   traversals: over children; over descendents in
> >   pre-order (others?).
> 
> What do you mean by non-live?  Do you mean that if an iterator
> over a document with 100 nodes should return exactly 100 nodes
> even if nodes have been inserted or removed from it during
> iteration?  I doubt this is what you want.

Err ... poor choice of words on my part.

What I meant was: lightweight iterators which are not
required by the spec to be robust in the face of
modifications to the document.

So, for example, an iterator over children could be
simply defined (tho' not necessarily implemented) in
terms of sibling operations on the current node; a
pre-order iterator could be defined in terms of
sibling and parent/child operations on the current
node. This sort of locality is required if we want
the possiblity of iterator operations being O(1).

Obviously, a traversal defined by such an iterator
could be distrupted by modifications to the tree, eg.
if the current node was removed during the traversal
(amongst other possiblities). The spec should document
that fact, and leave iterator users to take appropriate
action.

We can already build these iterators as things stand,
but it'd be nice to have a standard iterator interface,
particularly in conjunction with a hypothetical standard
NodeVisitor (because we ought to keep traversal
algorithms separate from the visitation stuff).

Steve (was it you?) has suggested that we might *also*
(not instead) have more heavyweight iterators which
*are* robust in the face of document modifications. I'm
not sure this is a good idea, partly because defining
their behaviour looks to be very difficult, and partly
because support for them might have a negative impact on
implementations even if they're never actually used (cp.
NodeLists).

Cheers,


Miles

-- 
Miles Sabin                          Cromwell Media
Internet Systems Architect           5/6 Glenthorne Mews
+44 (0)181 410 2230                  London, W6 0LJ
msabin@cromwellmedia.co.uk           England

Received on Wednesday, 18 November 1998 07:09:35 UTC