D O M Document Object Model

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

Präsentation PS: Klasse File von Janko Lange, Thomas Lung, Dennis Förster, Martin Hiller, Björn Schöbel.
Entwicklung UnivIS-Anbindung auf Basis von PHP und DOM-XML
Objektorientierte Datenbanken
Fortgeschrittenenpraktika WS 2003/04 Database Research Group, Prof. Dr. Bernhard Seeger Department of Mathematics and Computer Science University of Marburg.
XML.
7. Natürliche Binärbäume
Christian A. Kopf Institut für Informatik FU Berlin Episode Recognizer Framework - Rahmenwerk zur Episodenerkennung.
XML - Aufbau und Struktur - mit Einsatz im B2B
Hands On – Einführung in XML
IMS Universität Stuttgart 1 Einführung in XML Hannah Kermes HS: Elektronische Wörterbücher Do,
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Java: Dynamische Datentypen
Baumstrukturen Richard Göbel.
DOM (Document Object Model)
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
XINDICE The Apache XML Project Name: Jacqueline Langhorst
HTML - Eine erste Annäherung
XML-Parser Manuel Röllinghoff.
Document Object Model (DOM)
XHTML 1.1 C. Nimz Abstrakte Module XHTML 1.1 C. Nimz Was ist ein abstraktes Modul? Definition eines XHTML-Moduls in spezieller leichter.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
XML Standardisierungen und Abfragesprachen
Speicherung von XML- Dokumenten als Large Objects.
Hauptseminar XML-Technologie: Resource Description Framework (RDF) Michael Kranz Betreuer: Roland Haratsch.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Klassen und Objekte
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
CRM Editor auf der Basis von Qt (Beispiel von Ubi erat Lupa)
Was versteht man unter XML Schema?
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
Die Persistenzschicht
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Vortrag HTML, XHTML, DHTML
XML - verwandte Standards
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. M. Thaller AM1: Re-usable Content in 3D und Simulationssystemen.
Java für Fortgeschrittene
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 2 Folie 2 XAML (1) s.a.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 2 ADO.NET s.a:
Übung Datenbanksysteme II Index- strukturen
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Wohlgeformtheit und Gültigkeit Grundlagen der Datenmodellierung Anke Jackschina.
Oliver Spritzendorfer Thomas Fekete
XML und Datenbanken © 2006 Markus Röder
Algorithmen und Datenstrukturen Übungsmodul 8
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Thomas Hilpold: Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger.
E-Business und E-Service
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
SQLite und XML in PHP 5.
XJustiz XJustiz_XML XJustiz_Schema Fachmodul Wertelisten
Drucken mit XSL-FO DaimlerChrysler  Drucken von Webseiten
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
© 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg.
XML-Verarbeitung mit dem.NET-Framework. Inhalt 1.XML-Verarbeitung mittels XmlReader- und XmlWriter-basierter Klassen 2.XML-Verarbeitung mittels XmlDocument.
Persistenz: Objekt-Lebensdauer In RDBMS wird Lebensdauer von Werten durch ihren Typ festgelegt: Instanzen von Relationstypen sind persistent, alle anderen.
Die Kopierarten im BIC Design
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Algorithmen und Datenstrukturen 1 SS 2002
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
HG13_ Herzgen, Jung & Lorkowski1 Java Programmierung BlueJ Workshop.
Java-Kurs Übung Besprechung der Hausaufgabe
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
1 Java und XML Stephan Baldes Warum XML? In welchem Format wurden die Daten gespeichert? Bernd;Thomas;3;5;1987;Freiburg;Karlsruhe Peter;Maier;7;9;1980;Karlsruhe;Freiburg.
 Präsentation transkript:

D O M Document Object Model Seminar „XML und Datenbanken“ SS 2004 Michael Stanek

Gliederung Was ist DOM? - Allgemeines und Historie DOM – Objektmodell - Was versteht man darunter? - DOM-Baum - Beispiel XML-Dokument als DOM-Baum Modulkonzept - Grundidee - Modulhierarchie Schnittstellen - Schnittstellenhierarchie - Schnittstelle: Was für Methoden? Auswirkung am obigen Bsp. - Node, Document, etc. Zusammenfassung

1. Was ist DOM? - Allgemeines per W3C definierte Schnittstelle unterstützt wohlgeformte und gültige XML-Dokumente abstrakt und sprachneutral Definition von Schnittstellen und Methoden für Durchsuchen, Zugriff, Einfügen, Ändern und Löschen von Dokumentinhalten alle Objekte sind in einer hierarchischen Baumstruktur angeordnet – dem DOM-Baum

1. Was ist DOM? - Historie Entwicklung begann 1996 durch unterschiedliche Ansätze für DHTML DOM Level 1 am 01.10.1998 Zunächst nur Objektstruktur und Objektdefinitionen Methodendefinitionen DOM Level 2 am 13.11.2000 Vertiefung von DOM Level 1 Definitionen Einbindung von XML-Namensräumen und Cascading Style Sheets DOM Level 3 am 06.04.2004 Verstärkung von dynamischer Änderung von Dokumentinhalten Load & Save

2. Das DOM-Objektmodell Daten aus XML-Dokument für Applikation zugänglich machen Schnittstelle zwischen XML-Dokument und Applikation zum Arbeiten auf den Daten Quasi-Standard, Empfehlung XML-Dokumente hierarchisch aufgebaut → logische Struktur Überprüfung mittels Parser

2.1 DOM-Strukturmodell Struktur wird in „DOM-Strukturmodell“ übernommen günstige Implementierungsform „Baum-ähnlich“ Applikation arbeitet auf „DOM-Baum“ (read & write)

2.2 DOM-Baum alle XML-Elemente sind Knoten mit gewissen Eigenschaften jeder Baum besitzt genau einen Wurzelknoten, welcher das gesamte XML-Dokument repräsentiert über Diesen erfolgt Zugriff auf restliche Elemente (Navigation) keine sonstigen Implementationsvorschriften, allerdings Forderung nach strukturellem Isomorphismus

2.2 DOM-Baum – Beispiel (XML-Datei) <!DOCTYPE InstitutXML> <institut> <name>Institut für Informatik</name> <direktor>Prof. Dr. H.-D. Hecker</direktor> <lehrstuhl> Datenbanken <leiter> <name>Prof. Dr. K. Küspert</name> </leiter> <mitarbeiter> <name>Dipl. Inf. T. Müller</name> </mitarbeiter> <name>Dipl. Inf. K. Stolze</name> </lehrstuhl> <name>Softwaretechnik</name> .... </institut>

3. Modulkonzept DOM-Funktionalität ist in Module aufgeteilt Module sind hierarchisch aufgebaut Basismodul ist Core-Modul und muss von jeder DOM-Implementierung bereitgestellt werden weitere Module spezialisieren Grundfunktionen

3.1 Modulhierarchie Core: Grundfunktionen für Navigation und Manipulation Views: Sichtdefinitionen Events: Ereignisbehandlung Traversal: Traversierungsfunktionen Range: Bereichszugriffe Aösjf ljdsflajfs

4. Schnittstellen für jeden Knotentyp gibt es separate Schnittstelle Schnittstellen sind hierarchisch angelegt fast alle Knotentypen stammen von Klasse Node ab

4.1 Knotentypen im Beispiel

4.2 Schnittstelle Node Basisschnittstelle für fast alle weiteren Dokumentbestandteile (Objekte) vereinigt gemeinsamen Eigenschaften der verschiedenen Knotentypen alle weiteren Objekte müssen Methoden von Node implementieren Methoden für Identifikation von Knoten, Navigation im DOM-Baum sowie Manipulation der Baumstruktur

4.2.1 Identifikation da fast alle Knotentypen von Node abstammen, muss eindeutige Identifikation gewährleistet werden, um z.B. speziellere Methoden einsetzen zu können nodeType() jeder Knoten besitzt zusätzlich einen definierten Namen (Bsp. „mitarbeiter“), der für Navigationszwecke gebraucht werden kann nodeName()

4.2.2 Navigation Zugriff auf Kindknoten und Vaterknoten hasChildNodes() & childNodes() firstChild() & lastChild() parentNode() Zugriff auf Knoten der gleichen Hierarchieebene previousSibling() & nextSibling()

4.2.2 Navigation (Bsp) 1 parentNode() 2 childNodes() 3 firstChild() 4 lastChild() 5 previousSibling() 6 nextSibling() 1 5 6 2 3 4

4.2.3 Strukturmanipulation Einfügen neuer Knoten insertBefore(newNode) appendChild(newNode) Verändern bereits vorhandener Knoten replaceChild(refNode, newNode) removeChild(refNode) Kopieren von Knoten cloneNode(deep) deep ≡ boolean-Variable, für flache (false) bzw. tiefe (true) Kopie gesetzt Insert und Update-Vorgänge verlangen jeweils fertige Knoten vom Typ Node, die vorher erzeugt werden müssen (→ Schnittstelle Document)

4.2.3 Strukturmanipulation (Bsp 1) ref_Node.insertBefore(newNode)

4.2.3 Strukturmanipulation (Bsp 2) ref_Node.appendChild(newNode)

4.3 Schnittstelle Document repräsentiert den Zugang zu einem XML-Dokument und ist Ergebnis des Parse-Vorgangs konzeptuell gesehen, ist es die Wurzel bzw. der Einstieg in jeden DOM-Baum (Primärzugriff für Dokumentdaten) Elemente, Textknoten, Kommentare, etc. existieren nicht ohne Zusammenhang zu einem Dokument → Document enthält die Factory-Methoden zur Erzeugung dieser Objekte (Datenmanipulation) erzeugte Objekte besitzen ein Attribut ownerDocument zur Bindung an das entsprechende Dokument (allerdings im Interface Node deklariert)

4.3.1 Information Document enthält Attribute die Informationen über das entsprechende Dokument beinhalten doctype enthält den Dokumententyp (DOCTYPE in XML) implementation enthält Infos zur verwendeten DOM-API documentElement liefert das „eigentliche“ Wurzelelement des DOM-Baums getElementbyTagName(tagname) liefert eine Liste von Knoten die dem tagname entsprechen

4.3.1 Information (Bsp) 1 doctype 2 implementation 3 documentElement 4 getElementByTagname(„mitarbeiter“) 1 2 3 4

4.3.2 Datenmanipulation Factory-Methoden createElement(tagname) createAttribute(name) createTextNode(data) etc. createDocumentFragment() Container für möglich Teilbäume

4.3.2 Datenmanipulation (2) Unterstützung der jeweiligen Schnittstelle nötig, da Werte gesetzt werden müssen (tagname, data, etc.) Schnittstelle Element setAttribute(name, value) removeAttribute(name) Schnittstelle Attr setValue(value)

4.4 Beispiel Beispiel für appendChild(refNode, newNode) im Dokument „institut“ Es soll ein neuer Mitarbeiter im Lehrstuhl „Datenbanken“ eingetragen werden Voraussetzungen: Referenz auf Vaterknoten ‘lehrstuhl‘ (vorher Navigation) Einzufügender Knoten ‘mitarbeiter‘ muss vorher generiert werden ref_lehrstuhl.appendChild(neu_mitarbeiter) ref_mitarbeiter.appendChild(neu_name) Navigation node = getElementByTagname(„Datenbanken“) ref_lehrstuhl = node.parentNode();

4.4 Beispiel (2) 1 = getElementByTagname(„Datenbanken“) 2 = node.parentNode(); 2 1

4.4 Beispiel (3) Generieren des neuen Knotens durch Zugriff auf Factory-Methoden der Schnittstele Document neu_mitarbeiter = institut.createElement(„mitarbeiter“) neu_name = institut.createTextNode(„Student Alex“) Einfügen mittels appendNode() ref_mitarbeiter = ref_lehrstuhl.appendNode(neu_mitarbeiter) ref_name = ref_mitarbeiter.appendNode(neu_name)

4.4 Beispiel (4)

4.4 Beispiel (4) 1 = ref_lehrstuhl.appendNode(neu_mitarbeiter)

4.4 Beispiel (4) 1 = ref_lehrstuhl.appendNode(neu_mitarbeiter) 2 = ref_mitarbeiter.appendNode(neu_name)

5. Zusammenfassung abstrakt und sprachneutral Hierarchische Anlehnung in Baum-Form Navigation und Manipulation großer Speicherbedarf da kompletter Baum abgelegt werden muss → nicht für große Dokumente geeignet relativ langsam beim Parsen im Vergleich zu SAX, da Baum erst generiert werden muss

Fragen ?