Polymorphe Typen in OEM (1) OEM. Polymorphe Typen in OEM (2) Object Exchange Model (OEM)



Ähnliche Dokumente
Kapitel 8: Semistrukturierte Datenmodelle

IT-Zertifikat: Daten- und Metadatenstandards

XML Schema vs. Relax NG

Software Engineering Klassendiagramme Assoziationen

... MathML XHTML RDF

Java und XML 2. Java und XML

Grundbegriffe der Informatik

Datenaustauschformate. Datenaustauschformate - FLV

, Rainer Schmidberger, ISTE. XML und Java. Rainer Schmidberger

2. Einführung in Datenbanken und XML

DTD: Syntax-Zusammenfassung

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

XML Grundlagen. Andreas Rottmann,Sebastian Riedl. 27. August Quit Full Screen Previous Page Next Page GoTo Page Go Forward Go Back

HTML5. Wie funktioniert HTML5? Tags: Attribute:

Ruhr.pm XML-Daten verarbeiten mit XML::LibXML Autor: Datum:

Multimedia Technologie II

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

1 topologisches Sortieren

Multimediale Web-Anwendungen. JavaScript. Einführung. MWA JavaScript-Einführung Dr. E. Schön Sommersemester 2015 Folie 1.

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Objektorientierte Programmierung

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

X-Technologien. XML and Friends. Jörn Clausen 9. Juli 2001

Java: Kapitel 9. Java und XML. Programmentwicklung WS 2008/2009. Holger Röder

XSL Templates. Mit Templates arbeiten. XSL Templates

Java: Vererbung. Teil 3: super()

1 Software Engineering 1

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

XML-Austauschformat für Sicherheitsdatenblätter

Online-Publishing mit HTML und CSS für Einsteigerinnen

Präsentation Von Laura Baake und Janina Schwemer

Semistrukturierte Datenmodelle. XML Datenmodelle. XML Infoset. OEM Beispielbaum. Document InfoItem. Beispiel

Programmiersprachen und Übersetzer

Semantic Web Technologies I

WS 2009/10. Diskrete Strukturen

Vortrag im Rahmen des IFC-Seminars am Performance Messungen mit XML bei der empolis GmbH

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

WEBSEITEN ENTWICKELN MIT ASP.NET

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Präsentation zum Thema XML Datenaustausch und Integration

Einführung in die Java- Programmierung

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

XML-Programmierschnittstellen: SAX, DOM

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Theorie der Informatik

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

2. XML 2.1 XML 1.0 und XML Schema. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit

Einführung in die Programmierung

AK Medientechnologien 05 Delegation

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen

Vorkurs C++ Programmierung

5. Programmierschnittstellen für XML

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Übungsaufgaben zu XML:

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Kapiteltests zum Leitprogramm Binäre Suchbäume

An integrated total solution for automatic job scheduling without user interaction

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Objektorientierte Programmierung. Kapitel 12: Interfaces

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Anmerkungen zur Übergangsprüfung

Prinzipien Objektorientierter Programmierung

SDD System Design Document

XML und SOAP Einführung und Grundlagen

Datenstrukturen & Algorithmen

C# im Vergleich zu Java

Delegatesund Ereignisse

RDF und RDF Schema. Einführung in die Problematik Von HTML über XML zu RDF

SEP 114. Design by Contract

Programmieren in Java

Assoziation und Aggregation

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Grundlagen von Python

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

5. Programmierschnittstellen für XML

Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof

XML-Namensräume. Marc Monecke

Formale Sprachen und Grammatiken

KURZANLEITUNG CLOUD OBJECT STORAGE

PROSTEP AG: Anmelden für eine mehrtägige Schulung für Opel-Zulieferer

Breiten- und Tiefensuche in Graphen

Benutzerhandbuch - Elterliche Kontrolle

Zusatzmodul Lagerverwaltung

Wiederholung: Beginn

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Modellierung und Programmierung 1

Webseite in XML Kurzeinführung

Zur Konfiguration werden hierbei das Setup-Tool und die Shell verwendet.

Binäre Bäume Darstellung und Traversierung

Klaus Schild, XML Clearinghouse Namensräume

GRS SIGNUM Product-Lifecycle-Management

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Transkript:

Polymorphe Typen in (1) Object Exchange Model (). Motivation: Historische Entwicklung, alternatives semistrukturiertes Datenmodell. Manche Ansätze im Folgenden basieren auf. Thema der folgenden Folien. Atomare Typen string Polymorphe Typen Obj ::= sel: Typ Set ::= {Obj Typ Atomarer Typ oder Obj. Objekt: Sammlung atomarer oder zusammengesetzter Datenelemente. Selektor (Attribut) identifiziert jede Komponente nicht-eindeutig. Set: Menge von Objekten. Datenbankeinsatz: Semistrukturierte Datenmodelle 1 Datenbankeinsatz: Semistrukturierte Datenmodelle 2 Polymorphe Typen in (2) Object Exchange Model () Objekt-Typ: Wiederholtes Vorkommen des gleichen Selektors möglich. Verweise von unterschiedlichen Positionen aufs gleiche Objekt möglich. Objekt-Identifier. Veranschaulichung von Objekten als gerichtete Graphen. complex object paper bib &o1 paper references &o12 &o24 &o29 references references year title http title publisher title object identifier pages &o43 &o96 &o25 firstname lastname 1997 atomic object firstname lastname first last Serge Abiteboul &o243 Victor &o206 Vianu 122 133 Datenbankeinsatz: Semistrukturierte Datenmodelle 3 Datenbankeinsatz: Semistrukturierte Datenmodelle 4

bib: &o1 { paper: &o12 {, : &o24 {, paper: &o29object Exchange Model () { : &o52 Abiteboul, : &o96 { firstname: &o243 Victor, lastname: &o206 Vianu, title: &o93 Regular path queries with constraints, references: &o12, references: &o24, Bib pages: &o25 { first: &o64 122, last: &o92 133 &o1 firstname Serge &o43 Abiteboul 1997 paper paper references &o12 &o24 &o29 references references year title http title publisher title lastname &o243 Victor &o96 &o206 Vianu pages &o25 firstname lastname first last 122 133 Object Exchange Model () Textuelle Darstellung bib: &o1 { paper: &o12 {, : &o24 {, paper: &o29 { : &o52 Abiteboul, : &o96 { firstname: &o243 Victor, lastname: &o206 Vianu, title: &o93 Regular path queries with constraints, references: &o12, references: &o24, pages: &o25 { first: &o64 122, last: &o92 133 Datenbankeinsatz: Semistrukturierte Datenmodelle 5 Datenbankeinsatz: Semistrukturierte Datenmodelle 6 Object Exchange Model () Bewertung Textuelle Darstellung bib: &o1 { paper: &o12 {, : &o24 {, paper: &o29 { : &o52 Abiteboul, : &o96 { firstname: &o243 Victor, lastname: &o206 Vianu, title: &o93 Regular path queries with constraints, references: &o12, references: &o24, pages: &o25 { first: { paper: &o64{ : 122, last: Abiteboul, &o92 133 : { firstname: Victor, lastname: Vianu, title: Regular path queries, pages: { first: 122, last: 133 ohne Ordnung! Set Obj Atomarer Typ Strukturelle Mächtigkeit gering. Beschränkte, aber mächtige strukturelle Orthogonalität. Datenbankeinsatz: Semistrukturierte Datenmodelle 7 Datenbankeinsatz: Semistrukturierte Datenmodelle 8

Unterschiede zu Dokumenttypdefinition Reihenfolge, kein, Markierung der Kanten, nur ein atomarer Typ, Objekt-Identifier. Dokumenttypdefinition (DTD) ist im wesentlichen Menge von Regeln/Grammatik, DTD gibt vor, was für Markup (an welcher Stelle genau im Dokument des Typs) vorkommen darf. z Datenbankeinsatz: Semistrukturierte Datenmodelle 9 Datenbankeinsatz: Semistrukturierte Datenmodelle 10 Beispiel: Bookstore DTD Well-Formed vs. Valid <!ELEMENT store ()*> <!ELEMENT (title,+,price?)> <!ATTLIST genre CDATA #REQUIRED> <!ELEMENT title (#PCDATA)> <!ELEMENT ( name (firstname,lastname))> <!ELEMENT price (#PCDATA)> <!ELEMENT name (#PCDATA)> wohlgeformt (well-formed) ein Dokument besitzt geordnete syntaktische Eigenschaften, gültig (valid) Ein Dokument ist wohlgeformt und folgt einem a priori gegebenen, formalisiert in einer Dokumenttypdefinition (DTD). Datenbankeinsatz: Semistrukturierte Datenmodelle 11 Datenbankeinsatz: Semistrukturierte Datenmodelle 12

-ta I: DTD Eine DTD definiert kontextfreie Grammatik für -Dokumente. Einschränkung von Elementen und Attributen auf definierte Auswahl und Struktur. <bib> <paper id= o12 > <title> Foundations of Databases </title> <> <firstname> Serge </firstname> <lastname> Abiteboul </lastname> </> <year> 1997 </year> <publisher> Addison Wesley </publisher> </paper> </bib> <!ELEMENT paper (title, +, year, publisher?)> ]> DTD DTD Deklaration von Elementen Beschreibt die Einschränkungen des Inhalts eines Elements <!ELEMENT Name (Definition)> Einziger atomarer Typ: #PCDATA (Parsed Character DATA) (a,b,c): Liste von Unterelementen (a b c): Alternativen Kardinalitäten: * keinmal oder beliebig oft + einmal oder beliebig oft? kein- oder einmal (optional) (ohne Angabe): genau einmal EMPTY: Erzwingen von leerem Element. <!ELEMENT paper (+, year, publisher?)> ]> DTD Datenbankeinsatz: Semistrukturierte Datenmodelle 13 Datenbankeinsatz: Semistrukturierte Datenmodelle 14 DTD Deklaration von Elementen (2) Beschreibt die Einschränkungen des Inhalts eines Elements <!ELEMENT Name (Definition)> Einziger atomarer Typ: #PCDATA (Parsed Character DATA) (a,b,c): Liste von Unterelementen (a b c): Alternativen Kardinalitäten: * keinmal oder beliebig oft + einmal oder beliebig oft? kein- oder einmal (optional) (ohne Angabe): genau einmal EMPTY: Erzwingen von leerem Element. Einleitung und Festlegung des Wurzelelements bib <!ELEMENT paper (+, year, publisher?)> ]> DTD Datenbankeinsatz: Semistrukturierte Datenmodelle 15 DTD Deklaration von Elementen (3) Beschreibt die Einschränkungen des Inhalts eines Elements <!ELEMENT Name (Definition)> Einziger atomarer Typ: #PCDATA (Parsed Character DATA) (a,b,c): Liste von Unterelementen (a b c): Alternativen Kardinalitäten: * keinmal oder beliebig oft + einmal oder beliebig oft? kein- oder einmal (optional) (ohne Angabe): genau einmal EMPTY: Erzwingen von leerem Element. bib kann beliebig viele Elemente vomtyp paper enthalten <!ELEMENT paper (+, year, publisher?)> ]> DTD Datenbankeinsatz: Semistrukturierte Datenmodelle 16

DTD Deklaration von Elementen (4) Beschreibt die Einschränkungen des Inhalts eines Elements <!ELEMENT Name (Definition)> Einziger atomarer Typ: #PCDATA (Parsed Character DATA) (a,b,c): Liste von Unterelementen (a b c): Alternativen Kardinalitäten: * keinmal oder beliebig oft + einmal oder beliebig oft? kein- oder einmal (optional) (ohne Angabe): genau einmal EMPTY: Erzwingen von leerem Element. paper besteht aus mindestens einem, genau einem year und einem optionalen publisher in genau dieser Reihenfolge. <!ELEMENT paper (+, year, publisher?)> ]> DTD Datenbankeinsatz: Semistrukturierte Datenmodelle 17 DTD Deklaration von Elementen (5) Beschreibt die Einschränkungen des Inhalts eines Elements <!ELEMENT Name (Definition)> Einziger atomarer Typ: #PCDATA (Parsed Character DATA) (a,b,c): Liste von Unterelementen (a b c): Alternativen Kardinalitäten: * keinmal oder beliebig oft + einmal oder beliebig oft? kein- oder einmal (optional) (ohne Angabe): genau einmal EMPTY: Erzwingen von leerem Element. firstname ist vom Typ Zeichenkette <!ELEMENT paper (+, year, publisher?)> ]> DTD Datenbankeinsatz: Semistrukturierte Datenmodelle 18 DTD Deklaration von Attributen Name-Zeichenkettenwert-Paar Assoziiert mit einem Element <!ATTLIST Element Attributname1 Typ1 Zusatz1 Attributname2 > Typ: CDATA Zeichenkette ID OID IDREF Referenz IDREFS Menge von Referenzen Zusatz: REQUIRED zwingend IMPLIED optional (Initialwert) <!ELEMENT paper (+, year, publisher?)> DTD Deklaration von Attributen (2) Name-Zeichenkettenwert-Paar Assoziiert mit einem Element <!ATTLIST Element Attributname1 Typ1 Zusatz1 Attributname2 > Typ: CDATA Zeichenkette ID OID IDREF Referenz IDREFS Menge von Referenzen Zusatz: REQUIRED zwingend IMPLIED optional (Initialwert) paper besitzt ein Attribut id, eine OID, die zwingend mit einem eindeutigen Wert belegt werden muß. <!ELEMENT paper (+, year, publisher?)> ]> DTD Datenbankeinsatz: Semistrukturierte Datenmodelle 19 Datenbankeinsatz: Semistrukturierte Datenmodelle 20 ]> DTD

DTD Deklaration von Attributen (3) Name-Zeichenkettenwert-Paar Assoziiert mit einem Element <!ATTLIST Element Attributname1 Typ1 Zusatz1 Attributname2 > Typ: CDATA Zeichenkette ID OID IDREF Referenz IDREFS Menge von Referenzen Zusatz: REQUIRED zwingend IMPLIED optional (Initialwert) Ein hat ein Attribut age, mitdem ihm eine Zeichenkette mit dem Wert für sein Alter zugewiesen werden kann (aber nicht muß). <!ELEMENT paper (+, year, publisher?)> DTD OIDs und Referenzen (1) erlauben die Deklaration von OIDs, Referenzen und Referenzmengen als Attribute. Beispiel: <family> <person id= jane mother= mary father= john > <name> Jane Doe </name> </person> <person id= john children= jane jack > <name> John Doe </name> </person> <person id= mary children= jane jack > <name> Mary Smith </name> </person> <person id= jack mother= mary father= john > <name> Jack Smith </name> </person> ]> DTD Datenbankeinsatz: Semistrukturierte Datenmodelle 21 </family> Datenbankeinsatz: Semistrukturierte Datenmodelle 22 <!DOCTYPE family [ <!ELEMENT family (person*)> <!ELEMENT person (name)> <!ELEMENT name (#PCDATA)> <!ATTLIST person id ID #REQUIRED mother IDREF #IMPLIED father IDREF #IMPLIED children IDREFS #IMPLIED> ]> DTD DTD OIDs und Referenzen (2) Keine Konsistenzbedingungen à la Person kann nicht gleichzeitig Vater und Mutter sein. father-attribut kann nur auf Männer verweisen. Primär- vs. Sekundärstruktur Attribut vom Typ ID ist innerhalb eines Dokuments eindeutig, IDREF ist eine Referenz auf eine ID, Parser prüft referentielle Integrität, keine Einschränkung des Typs. Datenbankeinsatz: Semistrukturierte Datenmodelle 23 Datenbankeinsatz: Semistrukturierte Datenmodelle 24

Rekursion in definieren kontextfreie Grammatiken. Rekursive Definitionen sind möglich. <!DOCTYPE paper [ <!ELEMENT paper (section*)> <!ELEMENT section ((title, section*) text)> <!ELEMENT title (#PCDATA)> <!ELEMENT text (#PCDATA)> ]> DTD Datenbankeinsatz: Semistrukturierte Datenmodelle 25 Datenbankeinsatz: Semistrukturierte Datenmodelle 26 Werkzeuge (2) Datenbankeinsatz: Semistrukturierte Datenmodelle 27 Datenbankeinsatz: Semistrukturierte Datenmodelle 28

Werkzeuge (4) Datenbankeinsatz: Semistrukturierte Datenmodelle 29 Datenbankeinsatz: Semistrukturierte Datenmodelle 30 Datenbankeinsatz: Semistrukturierte Datenmodelle 31 Datenbankeinsatz: Semistrukturierte Datenmodelle 32

Datenbankeinsatz: Semistrukturierte Datenmodelle 33 Datenbankeinsatz: Semistrukturierte Datenmodelle 34 Bewertung von weisen bei der Definition eines s jedoch einige Schwächen auf: Ungewollte Festlegung der Reihenfolge: <!ELEMENT person (name, phone) > Workaround: <!ELEMENT person ((name, phone) (phone, name)) > Kann teilweise zu vage werden: <!ELEMENT person ((name phone email)*) > Referenzen können nicht eingeschränkt (typisiert) werden. Alle Elementnamen sind global in einem Namensraum. Datenbankeinsatz: Semistrukturierte Datenmodelle 35 Datenbankeinsatz: Semistrukturierte Datenmodelle 36 z

Anwendungen (1) Anwendungen (2) Bis jetzt: Herangehensweise eher kontemplativ, Modellierung stand im Vordergrund. Jetzt: Arbeiten mit -Dokumenten. Es muß leicht möglich sein, -basierte Anwendungen zu entwickeln. Standards, die auf aufbauen. Fortsetzung des Kochrezept-Beispiels: Anwendungsunabhängig: Wieviele Zutaten enthält das aktuelle Kochrezept? Anwendungsspezifisch: System, das Rezept vorschlägt, Dialogstruktur, Abbildung von Präferenzen auf Rezeptauswahl. Anwendungsspezifisch erfordert Programmierung, erfordert Anwendungswissen. Datenbankeinsatz: Semistrukturierte Datenmodelle 37 Datenbankeinsatz: Semistrukturierte Datenmodelle 38 Anwendungs Processor, Application Prozedurale Mechanismen; zwei Schnittstellen: DOM ( Document Object Model ) objektorientierte Sicht auf -Dokumente. SAX-API ( Simple API for ) Callback-Mechanismus. XSLT ( Extensible Stylesheet Language ), Querysprachen wie z. B. XQuery Query- und Transformationsmechanismen für -Dokumente, deklarativ. Aufruf für -Dok. -Processor (-Engine) Application Callback- Methoden DOM- Methoden -Engine validiert auch. DOM: Anwendung hält Kontrolle über den Ablauf. Callback-Methoden: -Processor hält Kontrolle. Datenbankeinsatz: Semistrukturierte Datenmodelle 39 Datenbankeinsatz: Semistrukturierte Datenmodelle 40

DOM: Document Object Model Objektorientierte Sicht auf -Dokumente und Dokumentbestandteile, Baumstruktur. Alle Dokumentbestandteile, nicht nur Elemente. Methoden erlauben das Navigieren im Baum und das Manipulieren des Baums. Keine Aussagen über die konkrete Implementation der Objekte, nur Methodeninterface wird spezifiziert. DOM-Anwender muß sich Klassenbibliothek besorgen, die er verwenden kann. lastname title The Autobiography of Benjamin DOM Illustration store price title price 8.99 firstname Franklin The Gorgias Plato name 9.99 Datenbankeinsatz: Semistrukturierte Datenmodelle 41 Datenbankeinsatz: Semistrukturierte Datenmodelle 42 DOM Illustration (Forts.) store-element sei gegeben. Verwendung von DOM-Methoden Programmiersprache Java im folgenden Beispiel: Node store = ; Nodelist s = store.getelementsbytagname( ) int i = 0; Node n = s.item(i); lastname DOM weitere Klassen Illustration The Autobiography of store title price < nationality= firstname U.S. inventory nationality =U.S. <first-name>benjamin</first-name> > 8.99 <last-name>franklin</last-name> </> Datenbankeinsatz: Semistrukturierte Datenmodelle 43 Datenbankeinsatz: Semistrukturierte Datenmodelle 44

DOM weitere Klassen Attribute und Methoden von Node Beispiele: Document inventory; inventory = ; Nodelist s = inventory.getelementsbytagname( ); Element a = (Element) s.item(0); AttributeList al = a.attributes(); Attribute attr = al.item(0); String av = (String) attr.getvalue(); previoussibling attributes nodename nodetype nodevalue parentnode haschildnodes childnodes firstchild childnodes.item(0) lastchild ownerdocument nextsibling length Datenbankeinsatz: Semistrukturierte Datenmodelle 45 Datenbankeinsatz: Semistrukturierte Datenmodelle 46 DOM Manipulationsmethoden Manipulationsmethoden von Node store insertbefore 8.99 lastname title The Autobiography of price title price firstname Benjamin Franklin The Gorgias Plato name 9.99 Node Plato = ; Node Franklin = ; n = removechild(plato); n2 = insertbefore(n, Franklin); replacechild appendchild removechild Datenbankeinsatz: Semistrukturierte Datenmodelle 47 Datenbankeinsatz: Semistrukturierte Datenmodelle 48

DOM Zusammenfassung DOM Ausblick Objektorientierte Sicht auf -Dokumente, Unterschiedliche Objekttypen entsprechen unterschiedlichen -Konzepten (z. B. Elemente, Attribute), Methoden zur Traversierung und Manipulation des Dokument-Baums. (Proprietäre) Methoden, die zusätzliche Funktionalität bieten, z. B. Anwendung von (XSL-)Stylesheets. Es gibt zahlreihe Implementierungen, d. h. Möglichkeiten, wie man mit DOM arbeiten kann, z. B.: Java (+ -Parser), JavaScript und Web-Browser. Datenbankeinsatz: Semistrukturierte Datenmodelle 49 Datenbankeinsatz: Semistrukturierte Datenmodelle 50 Event-basiertes Vorgehen (SAX) (1) SAX = Simple API for. -Engine geht durch das Dokument. Immer wenn dabei bestimmtes Ereignis eintritt, z. B. Anfang eines neuen Elements wird erkannt, wird entsprechende Callback-Methode aufgerufen (falls vorhanden). D. h. -Engine hat Kontrolle über den Ablauf. 8.99 lastname Illustration Event-basierter Ansatz The Autobiography of store title price firstname Benjamin Franklin startelement( store, ) startelement( ) startelement( title ) characterdata( The Auto, ) endelement( title, ) startelement(, ) Datenbankeinsatz: Semistrukturierte Datenmodelle 51 Datenbankeinsatz: Semistrukturierte Datenmodelle 52

8.99 lastname Illustration Event-basierter Ansatz The Autobiography of store title price firstname Benjamin Franklin startelement( store, ) startelement( ) startelement( title ) characterdata( The Auto, ) endelement( title, ) startelement(, ) Erläuterung der Illustration Events sind das Vorkommen der -spezifischen Konstrukte, z. B. Elemente, Text-Bestandteile, Kommentare. <item/> äquivalent zu <item></item>. Datenbankeinsatz: Semistrukturierte Datenmodelle 53 Datenbankeinsatz: Semistrukturierte Datenmodelle 54 Beispiel (1) Zählen der -Elemente. Beispiel-Code: int count = 0; void zaehlen(void *userdata, const char *name, const char **atts) { if (!strcmp(name, )) // String-Vergleich in C++ count++; void donothing( ) { return; Beispiel-Code (Forts.): Beispiel (2) int main() { _SetElementHandler (parser, zaehlen, donothing); if (!_Parse(parser, buf, len, done)) cout << count; Datenbankeinsatz: Semistrukturierte Datenmodelle 55 Datenbankeinsatz: Semistrukturierte Datenmodelle 56

Event-basiertes Vorgehen (SAX) (2) Event-basiertes Vorgehen (SAX) (3) Schnittstelle der Callback-Methoden ist standardisiert, Implementierung ist anwendungsspezifisch. Anwendungsprogrammierer schreibt und läßt nur Callback-Methoden registrieren für Ereignisse, an denen er interessiert ist. Reihenfolge der Events ist fest vorgegeben, wir können nicht z. B. auf Breitensuche umschalten. Datenbankeinsatz: Semistrukturierte Datenmodelle 57 Datenbankeinsatz: Semistrukturierte Datenmodelle 58 SAX Verhalten im Fehlerfall Ausblick Werden Events trotzdem ausgelöst, wenn Dokument fehlerhaft? Ja. Implementierung, die das abfängt, aber recht einfach zu realisieren. auf hinteren Teil des Kapitels. Bis hierhin: Übersicht /Wiederholung von Mechanismen für Anwendungs prozedural. Deklarativer Zugriff Mittel der Wahl; Datenunabhängigkeit. z Datenbankeinsatz: Semistrukturierte Datenmodelle 59 Datenbankeinsatz: Semistrukturierte Datenmodelle 60