Confusion while implementing the DOM.

Miles Sabin msabin at cromwellmedia.co.uk
Wed Jun 2 13:55:24 BST 1999


Andrew Douglas wrote,
<snip/>
> <root>
>   <elone>Hello</elone>
>   <eltwo>Goodbye</eltwo>
>   <elone>Gutten Adbend</elone>
>   <eltwo>Aufwiedersehen</eltwo>
>  </root>
>
> My underlying structure looks like this
>
>
>                         opentag(root)
>                            |
>                        zomcontent
>                |-----------+-----------------|
>            sequence                      sequence
>         |------+-----|                |------+-------|       
> opentag(elone) opentag(eltwo) opentag(elone) opentag(eltwo)
>       |               |              |             |   
>     text            text           text          text
>     
> Not suprisingly, it looks like a tree!  So, all these 
> things can be Nodes, but not all are Elements (opentags 
> are) -- some are probably DocumentFragments(zomcontent, 
> sequence, ...).
>
> So, my DOM implementation has the usual first/last
> Child, getChildNodes, get Next/Previous siblings, and 
> so on, but sometimes these children aren't Elements, 
> but are DocumentFragements.

Ahh ... no, I'm afraid that's not quite right. The DOMs
idea of the structure of your document would be,

  Document doc
    Element root          == doc.getDocumentElement()
      Element elone       == root.getFirstChild()
        Text Hello        == elone.getFirstChild()
      Element eltwo       == elone.getNextSibling()
        Text Goodbye
      Element elone
        Text Gutten Adbend
      Element eltwo
        Text Aufwiedersehen

A Document *never* has a DocumentFragment amongst its
children: the latter exist solely to provide a 
lightweight holder for Nodes which are _owned_by_, but 
not _part_of_ a given Document.

Note that all Nodes that are created on a particular
Document (eg. via Document.createElement()) are always
owned by that Document (and so can't be pasted into a
different doc), but don't become part of it until they're
explicitly added (eg., via someNode.appendChild()).

I hope that helps a bit ...

Cheers,


Miles

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

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)





More information about the Xml-dev mailing list