Re: adding DocumentFragment to a Node

Don Park, donpark@quake.net said on 11/4/98 1:10 AM:

>>The return value should be the Node added. Since, after being inserted
>>into another Node the DocumentFragment no longer exists, what is
>>returned?
>
>
>Return DocumentFragment.  DocumentFragment still exists even though its
>contents have been moved to another node.
>
>Don
>
>

I am trying to understand this. I am trying to create an implementation 
and trying to make it fit with the specs. I have very little patience 
with discussions about semantics, but this may be one of the few times it 
is appropriate. Lurking on this list, I have noticed that many of the 
threads can go back and forth about the subtleties the spec's meaning. I 
appreciate the patience of everyone.

With that said, I am forging through the spec while creating an 
implementation. Here's a little more detailed explanation of why having 
Node.insertNode() return a DocumentFragment Node after inserting a 
DocumentFragment Node is confusing to me.

If the DocumentFragment were inserted into a Node, it would be a Child of 
that Node. But according to the spec (from the description of Node 
attributes):

"parentNode

"The parent of the given Node instance. All nodes, except Documents and
DocumentFragments, have a parent."

And from the description of the insertChild method:

"If newChild is a DocumentFragment object, the entire contents of the 
document
fragment are moved into the child list of this node."

Here's the implications of this as I understand it: 

Before being inserted, a DocumentFragment's children will point to the 
DocumentFragment as their parentNode. After the DocumentFragment has been 
inserted, its children would point to the Node the DocumentFragment was 
inserted to as their parentNode. The DocumentFragment would not be 
included in the child list of the Node it was inserted into, but the 
DocumentFragment's children would be.

This supposes that a Node cannot be in the child list of two different 
Nodes.

Also from the spec under the description of the insertChild method:

"Note: After a successful call to this
method, the newChild node will be removed from its previous position in 
the tree, and all
NodeLists that reference the child list of this object, and previous and 
next sibling
attributes of some children, must be updated."

The old DocumentFragment no longer exists and a new Document Fragment 
cannot be placed as a child of  a Node. What are the characteristics of a 
DocumentFragment if that is what is returned? The attributes childNodes, 
parentNode, previousSibling, and nextSibling would all be null. The 
returned value from Node.insertNode() would not reflect what was actually 
inserted.

Again, thanks for your patience as I seek Ultimate Understanding of the 
spec.

Deke

-----------------------------------------------------------------
Deke Smith
Tallent Communications Group, Brentwood TN
deke@tallent.com, 615-661-9878
-----------------------------------------------------------------
" The best way to predict the future is to invent it. " 
       - Alan Kay 

Received on Wednesday, 4 November 1998 10:37:08 UTC