range boundary point update after insertion

Hi,

I have a question regarding the range boundary point update after
insertion:

Consider the following case:

<root>hello</root>

Scenario 1:
   rangeA is set as:

     start container: hello
     start offset: 1
     end container: hello
     end offset: 5

   Then after inserting the node <foo/> (rangeA.insertNode(foo);), the
   document has:

   <root>h<foo/>ello</root>

   And rangeA is updated as:

     start container: h
     start offset: 1
     end container: ello
     end offset: 4

   which is correct.

Scenario 2:
   What about if rangeA was instead set as

     start container: hello
     start offset: 1
     end container: root
     end offset: 1

   which in fact covers the same range of text as in the first scenario.
   But after rangeA.insertNode(foo):

   <root>h<foo/>ello</root>

   Should rangeA become:

     start container: h
     start offset: 1
     end container: root
     end offset: 3

   or

     start container: h
     start offset: 1
     end container: root
     end offset: 1

   ??

According to the spec, it says:

   The only case in which the boundary-point will be changed after the
   insertion is when the boundary-point and the insertion point have the
   same container [p.32] and the offset [p.32] of the insertion point is
   strictly less than the offset [p.32] of the Range's boundary-point.

So sounds like the latter one (end offset remains not changed) should
happen for scenario 2 since the end boundary-point and the insertion point
did not have same container ...

Thus rangeA becomes covering nothing after insertion in scenario 2; while
in the first scenario, rangeA is updated and covers "</foo>ello" after
insertion.

Is this correct?  Does it make sense?

Thanks!

Regards,

Tinny Ng
XML Parsers Development
IBM Toronto Laboratory, email: tng@ca.ibm.com

Received on Friday, 1 December 2000 12:23:13 UTC