3. Wie arbeitet DOM ?
>Das Prinzip von DOM ist die Abbildung der log. Struktur eines XML-Dokumentes auf
eine hierarchivische Baumstruktur, in welcher jedes einzelne Objekt ansprechbar ist
In der untersten Instanz ist jedes Ogjekt ein Knoten, welcher durch die Attribute
NodeName, NodeValue und NodeAttr spezifiziert ist.
Daneben existiert noch ein objektorientierter Ansatz,in dem jedes Tag entsprechend
seiner Funktion gekapselt ist, wie z.Bsp: Create,Append, Remove und Replace
die allgemeine Baumstruktur
Der gesamte Baum befindet sich im Arbeitsspeicher.
Somit arbeitet man mit virtuellen Dokumenten,welche
erst nach der Speicherung endgültig übernommen werden.
Nachteilig hierbei ist jedoch der hohe RAM-Speicherbedarf.
Diese Änderungen sind seit DOMLevelCore3 durch das
LS-Modul speicherbar. Desweiteren ist mit diesem Model
der Baum an sich speicherbar.
Ein kurzes Beispiel soll dies demonstrieren:
Auf der linken Seite steht ein Auszug aus einem XML-Dokument, rechts die entsprechende
DOM-Abbildung in eine Baumstruktur.

Die DOM - Objektstruktur
Der Wurzelknotren und somit die Basis der Baumstruktur ist der Knoten Document.
Jedes weitere Objekt bildet einen Unterknoten dieses Document-Knotens.
Die DOM - Schnittstellen
Die Schnittstellen sind die in Core und dessen Module zusammengefassten Knotendefinitionen.
Die Module setzen sich meist noch aus mehreren Untermodulen zusammen, welche die Methoden
beinhalten,welche Konstanten,Variablen und Attribute der einzelnen Schnittstellen eindeutig
definieren. Die in DOM standardmäßig vorkommenden Variablen sind:
|
DOMString |
16-bit Unicode-Sequenzen (UTF-16-Format) |
|
DOMTimeStamp |
enthält die vergangene Zeit in ms ( 64-bit unsigned long) |
|
DOMObject |
eine benutzerdefinierte Variable |
|
DOMUserdate |
referenziert versch. Objekte in Applikationen |
Desweiteren werden in den Schnittstellen die Art der Kinderknoten ( wenn existent) und deren
Anzahl definiert.Einen kurzen Überblick über diesen Sachverhalt sollen die direkt von Node
abgeleiteten Childnodes und deren Childdefinition geben.
Child von Node |
Funktion |
definierte Childs |
|
|
|
Document |
Primärzugang zur XML - Baumstruktur |
element(max 1), ProcessingInstruction, comment, documenttype(max 1) |
|
|
|
documentfragment |
teil eines Dokumentes |
element, ProcessingInstruction, comment, Text, cdatasection, entityreference |
|
|
|
entity |
enthält alle Entitys des Dokumentes |
element, ProcessingInstruction, comment, Text, cdatasection, entityreference |
|
|
|
entityreference |
Referenzierung einer Entity |
element, ProcessingInstruction, comment, Text, cdatasection, entityreference |
|
|
|
element |
representiert ein Element des Dokumentes |
element, ProcessingInstruction, comment, Text, cdatasection, entityreference |
|
|
|
attribute |
representiert ein Attribut eines Elementes von einem Objekt |
element, ProcessingInstruction, comment, Text, cdatasection, entityreference |
|
|
|
Doctype |
Doctypeanweisung |
keins |
|
|
|
ProcessingInstruction |
Charakter einer XML-Verfahrensanweisung |
keins |
|
|
|
comment |
representiert Kommentare |
keins |
|
|
|
Text |
textlicher Inhalt eines Elementes / Attributes |
keins |
|
|
|
cdatasection |
nicht als Attribute anhängbare Codes |
keins |
|
|
|
notation |
Notation einer DTD |
keins |
|
|
|
Zur Verdeutlichung folgen 3 W3C-Spezifikationen von verschiedenartigen Knoten.
W3C-Spezifikation des DOM-Knotens NodeList
length |
unsigned long |
item( index: unsigned long ) |
Node |
W3C-Spezifikation des DOM-Knotens Attr
name |
DOMString |
specified |
boolean |
value |
DOMString |
ownerElement |
Element |
W3C-Spezifikation des DOM-Knotens Element
TagName |
DOMString |
getAttribute(name : DOMString ) |
DOMString |
setAttribute(name : DOMString , value : DOMString ) |
|
removeAttribute(name : DOMString ) |
getAttributeNode(newAttr : DOMString ) |
Attr |
. . . |
getElementsByTagName(name : DOMString ) |
NodeList |
getAttributeNS(namespace URI : DOMString , local name : DOMString ) |
DOMString |
. . . |
|
hasAttribute(name : DOMString ) |
boolean |