Das DOM Core Modul
Seminar XML |
DOM - Das XML Document Object Model |
Die Bestandteile des DOM |
nächstes Unterkapitel : DOM HTML
DOMImplementation
grundlegende Datentypen:
DOMString :
Um Plattformunabhängigkeit zu gewähleisten, definiert das DOM
diesen Datentyp.
Ein DOMString ist eine Folge von 16bit-Einheiten. (unsigned short)
Implemenationen müssen bei der codierung eines DOMStrings das
UTF-16 Format benutzen.
Bei Stringvergleichen geht DOM davon aus, das der DOMbuilder die Strings
bereits normalisiert hat.
Ein String-Vergleich wird nur durch Vergleich der einzelnen 16-bit
Einheiten realisiert.
DOMTimeStamp :
Dieser Datentyp dient zur Aufnahme von Zeitdaten. DOMTimeStamp zählt
in Millisekunden.
Es wird ein unsigned long zu Grunde gelegt.
Das DOM-Struktur-Model:
DOMImplementation :
Das DOMImplementation Interface definiert einige Methoden, die unabhängig
von allen anderen Objekten des DOM sind. Dies sind im einzelnen Farbrikmethoden
zur Erzuegung von DocumentType-Objekten und von Document-Objekten, welches
ein neues XML-Dokument darstellt.
Node :
Das Node-Interface ist das allgemeinste Interface im DOM-Struktur-Modell.
Es stellt einen einzelnen Knoten in einer DOM-Struktur dar.
Das DOM sieht prinzipiell zwei unterschiedliche Betrachtungsweisen
einer Dokument-Struktur vor. Die erste verfolgt den objekt-orientierten
Ansatz. Hierbei werden alle Tags in, ihrer Funktion entsprechende,
Objekte gekapselt. Dies erfordert jedoch heufiges casting, welches in Sprachen
wie z.B. Java, sehr unperformant sein kann. Die zweite Sichtweise
geht deshalb davon aus, das alle Objekte vom Typ Node sind. Damit dennoch
alle Zugriffe auf alle Objekte vollständig möglich werden, musste
das DOM einige Redundanzen in Kauf nehmen.
Das Nodes-Interface implementiert die vereinfachte "flache" Sichtweise
durch die drei Attribute "nodeName", "nodeValue" und "attributes". Hat
zum Beispiel ein Objekt keine Attribute, würde "attributes" den Wert
"null" zurück geben.
Für den Objekt-Orientierten Ansatzt bietet das nodes-Interface
Methoden zum Einfügen, Ersetzen, Löschen und Anhängen von
Kind-Objekten.
Alle jetzt folgenden Interfaces, bis auf Text und CDATASection leiten
sich von "node" ab !
Document :
mögliche Kind-Objekte :
Element (max. 1), ProcessingInstruction, Comment, DocumentType(max.
1)
Funktion :
Das Document-Interace representiert das gesamte XML, bzw. HTML Dokument
und bietet den primaren Zugang zu den Dokumentdaten.
Es enthält Fabrikmethoden für elements, comments, processing
instructions und text nodes.
DocumentFragment :
mögliche Kind-Objekte :
Element (max. 1), ProcessingInstruction, Comment, Text, CDATA-Section,
EntityReference
Funktion:
DocumentFragment ist ein Interface für ein minimal Dokument.
Es darf nicht ``well-formed`` XML dokumente enthalten. DokumentFragment
kann zum Beispiel dazu eingesett werden, um meherer Teilbäume in ein
Hauptdokument einzufügen.
DocumentType :
mögliche Kind-Objekte : eine Kind-Objekte
Funktion : DocumentType bietet zugriff auf die Daten einer DTD.
Dazu gehören Attribute für Name der DTD, interne externe Entitys
und Notations.
EntityReference :
mögliche Kind-Objekte :
Element (max. 1), ProcessingInstruction, Comment, Text, CDATA-Section,
EntityReference
Funktion :
Das Interface-EnityReference bietet Zugriff auf EntityReferences. Es
ist der DOM Implementation überlassen, ob eine EnityReference schon
beim Aufbau der DOM-Struktur , oder erst bei Zugriff aufgelöst wird.
Folglich kommen bei Implementationen, die schon bei dem Aufbau der DOM-Struktur
EntityReferences auflösen, im DOM-Baum keine EntityReferences vor.
Element :
mögliche Kind-Objekte : Element (max. 1), Comment, Text, CDATA-Section,
EntityReference
Funktion :
Element ist ein Interace für ein einzelnes HTML/XML-Tag. Es bietet
Zugriffsmethoden auf die Attribute des Tags und den ihm untergeordneten
Elemente. Ab DOM-Level-2 gibt es die Möglichkeit das bei der qualifizierung
von Element Namen Namespaces berücksichtigt werden.
Attr :
mögliche Kind-Objekte : Text, EntityReference
Funktion :
Dieses Interface bietet Zugriff auf die Daten eines Attributes. Attr-Objekte
können nicht Kind-Elemente in einer DOM-Struktur sein. Aus diesem
Grund sind die Zeiger für parentNode, nextSibling, previousSibling
immer null. Dieses Vorgehen wurde vom W3C aus Effiziensgründen bei
der Implementierung gewählt.
ProcessingInstruction :
mögliche Kind-Objekte : keine Kind-Objekte
Funktion : beschreibt die Schnittstelle zu einem ProcessingInstruction
Element. Das Interface bietet Zugriff auf das target- und das data-feld
einer PI.
Comment :
mögliche Kind-Objekte : keine Kind-Objekte
Funktion : Dieses Interface ermöglicht den Zugriff auf den Text
eines in Kommentar-Elementes.
CharacterData :
mögliche Kind-Objekte : Text, CDATASection
Funktion : Das CharacterData Interface bietet Zugriff auf Text-Daten
im DOM. Dabei liegt immer ein DOMString zugrunde. Es werden Methoden zum
Anfügen, Einfügen, löschen und Ersetzen definiert. CharacterData
wird nie direkt benutzt. Allerdings leiten sich Text und CDATASection von
CharacterData ab.
Text :
mögliche Kind-Objekte : keine Kind-Objekte
Funktion : Schnittstelle zu einem Textelement. Enthält der Text
weitere Markups, werden auch diese geparst und als Kind-Objekte dem Text-Objekt
untergeordnet.
CDATASection :
mögliche Kind-Objekte : keine Kind-Objekte
Funktion : CDATASection Objekte sind weitestgehend mit Text-Objekten
vergelichbar. Im Gegensatz zu Text-Objekten wird der Inhalt eines CDATASection-Objektes
nicht geparst. CDATASections können nur in XML-Dokumenten vorkommen.
Entity :
mögliche Kind-Objekte : Element (max. 1), ProcessingInstruction, Comment,
Text, CDATA-Section, EntityReference
Funktion : Entity ist ein Interface für XML-Entitys. Ein Entitiy-Node
hat keine Übergeordneten Nodes. Es bietet Zugriff auf "notationName",
"publicID" und "systemID".
Notation :
mögliche Kind-Objekte : keine Kind-Objekte
Funktion : das Notation-Interface bietet Zugriff auf ein notation-element
der DTD.
Seminar XML |
DOM - Das XML Document Object Model |
Die Bestandteile des DOM |
nächstes Unterkapitel : DOM HTML