DOM L3 XPath: effect of mutation after iterator exhausted?

Hello.

     I was looking at the description of the XPathResult.iterateNext() 
method in the Working Group Note on DOM L3 XPath.[1]  The description of 
that method indicates the following DOMException may be thrown:

  INVALID_STATE_ERR: The document has been mutated since the result was 
returned

Similarly, the description of the invalidIteratorState attribute has this 
to say:

  Signifies that the iterator has become invalid. True if resultType
  is UNORDERED_NODE_ITERATOR_TYPE or ORDERED_NODE_ITERATOR_TYPE and
  the document has been modified since this result was returned.


     Once the XPathResult.iterateNext() returns the value null, I think it 
would be better if the DOMException no longer had to be thrown on any 
subsequent calls to iterateNext(); similarly, once the iterateNext() 
method returns the value null, I think it be better if 
invalidIteratorState always returned True.

     Here's why:  an obvious mechanism for implementing this sensitivity 
to mutation is for the implementation to register the XPathResult object 
to listen for DOM mutation events.  However, once the iterateNext() method 
returns the last object, it's very unlikely that the XPathResult object 
will continue to be used.  If all such "consumed" XPathResult objects that 
are created have to remain listening for DOM mutation events, just so they 
can set their invalidIteratorState attributes to True, it could prove very 
wasteful.

Thanks,

Henry
[1] 
http://www.w3.org/TR/2004/NOTE-DOM-Level-3-XPath-20040226/xpath.html#XPathResult-iterateNext
[2] 
http://www.w3.org/TR/2004/NOTE-DOM-Level-3-XPath-20040226/xpath.html#XPathResult-invalid-iterator-state

------------------------------------------------------------------
Henry Zongaro      Xalan development
IBM SWS Toronto Lab   T/L 969-6044;  Phone +1 905 413-6044
mailto:zongaro@ca.ibm.com

Received on Tuesday, 18 May 2004 16:59:21 UTC