institute for software science – university of viennap.brezany xml und datenbanken peter brezany...

100
Institute for Software Science – University of Vienna P.Brezany XML und Datenbanken XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Upload: jochim-kaucher

Post on 06-Apr-2015

106 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany

XML und DatenbankenXML und Datenbanken

Peter Brezany

Institut für Softwarewissenschaften

Universität Wien

Page 2: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany2

Motivation

• XML, die eXtensible Markup Language, ist heute in aller Munde. Man verspricht sich von ihr: branchenübergreifende Standardisierungen, weltweiten problemlosen Datenaustausch, portierbare Anwendungen, usw.

• Java: „write once, run everywhere“.• XML : „write once, read everywhere“ – eine ideale

Eigenschaft für das WWW.• XML ist eine Metasprache – eine Sprache zur

Definition von Sprachen, und diese mit XML definierten Vokabulare und Sprachen sind es, auf denen immer mehr Internetanwendungen aufbauen.

• XML ist auch nützlich für Datenaustausch zwischen Datenbanken und Andwendungen uns zwischen mehreren Paaren von Anwendungen.

Page 3: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany3

Motivation – Web DatenbankenEin Web Datenbanksystem ist ein DB Sytem, das persistente Daten über das Web

liefert.

DB DBMSWebServer

UserSoftw.

Applic.Softw.

OtherApplications

User

Operating System

Hardware

OS

HW

There are several ways that XML canbe used within a Web database system:•flat file DB that stores data as XML documents.•data stored in a traditional DB and formatted as XML when retrieved.•specialized XML DBMS

Page 4: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany4

Einführung• Erscheinung des World Wide Webs (WWW) in der

Mitte der 1990-er Jahren resultierte in sehr große Anforde-rungen an Daten-, Informations- und Wissensmanagement. Neue Werkzeuge sind notwendig.

• Neue strategisch wichtige Technologien sind erschienen: Extensible Markup Language (XML), semistrukturierte Datenbanken und semantisches Web.

• Diese Technologien haben enormen Einfluß auf e-business (electronic business).

Page 5: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany5

XML

Page 6: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany6

XML• XML ist am 10. Februar 1998 vom W3C standardisiert

worden. Es ist eine Metasprache. Um eine Sprache zu definieren, muß man ihre Grammatik und das Vokabular festlegen. Das tut man in der Dokumenttyp Definition (DTD).

• Dokumente gehören zum selben Dokumenttyp, wenn sie der gleichen DTD folgen. Z. B. HTML-Dokumente folgen der selben Grammatik (welche Tags können wie geschachtelt werden...) und können das selbe Vokabular (sprich die Tags) benutzen. Das bedeutet, daß alle HTML-Dokumente dem selben Dokumenttyp angehören, nämlich HTML.

• Jeder kann sich eine DTD bauen, und dann XML-Dokumente schreiben die dieser DTD folgen. Ein interpretierendes Programm (zB ein Browser) kann dann zwar sagen: Ja, dieses XML-Dokument ist gültig in Bezug auf diese DTD (d.h. das Dokument befolgt die Regeln der DTD, und gehört damit zum entsprechenden Dokumenttyp).

Page 7: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany7

XML (2)• Es kann aber NICHT wissen, was es mit diesem

oder jenem Element machen soll. Das bedeutet, daß sich jeder der eine DTD verfaßt auch darum kümmern muß, daß es Programme gibt, die mit den Dokumenten dieses Typs etwas anfangen können!

• Nun muß natürlich nicht jeder, der ein XML-Dokument schreibt, ein eigenes Programm zur Interpretation des Dokuments entwickeln. Zumindest wenn das XML in einem Browser angezeigt werden soll, gibt es dafür XSL (eXtensible Stylesheet Language).

Page 8: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany8

XML (3)Ein kleines Beispiel für ein XML-Dokument (ohne DTD):

<?xml version="1.0"?><BUCH> <TITEL>

Der Herr der Ringe </TITEL> <AUTOR> J.R.R. Tolkien </AUTOR></BUCH>

Das ähnelt HTML - XML ist eine Vereinfachung von SGML(Standardized Generalized Markup Language), und HTML mit SGML definiert wurde.

Page 9: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany9

Warum XML?• XML eine Metasprache. Das bedeutet, daß sich für

jeden beliebigen Zweck Dokumenttypen schaffen lassen. Z. B. könnten sich Meteorologen einen Dokumenttyp mit den Elementen <Luftdruck>, <Temperatur> usw. schaffen, und Ärzte einen Dokumenttyp mit den Elementen <PatientName> und <Sterbedatum>. Das heißt, daß XML in allen Bereichen als Datenaustauschformat zum Einsatz kommen kann. Ein weiterer Vorteil ist in diesem Falle, daß XML von Computern und Menschen lesbar ist.

• Im Gegensatz zu HTML, ist bei XML die Struktur bzw Grammatik (DTD), der Inhalt (das XML Dokument) und die Darstellung (z.B. XSL) getrennt. Das ermöglicht die unterschiedliche Darstellung des gleichen Inhalts (zB. als Text, HTML, Sprachausgabe, Braille-Schrift...) ohne die Änderung des XML-Dokuments.

• Bei Webseiten könnte man sich etwa vorstellen, XML-codierte Daten und ein kleines Programm das diese Daten interpretiert (bzw. ein XSL-Dokument) an den Client zu schicken.

Page 10: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany10

XML• Es gibt zwei Kriterien nach denen man XML-

Dokumente bewerten kann:

1.Wohlgeformtheit (wellformedness): Gemeint ist, daß ein wohlgeformtes XML-Dokument die Regeln des Standards befolgt, also beispielsweise < und > richtig benutzt und die Elemente korrekt geschachtelt sind. Folgendes ist also nicht wohlgeformt: <fett>Das ist <kursiv> völlig </fett> falsch! </kursiv>

2.Gültigkeit (validity): Ein wohlgeformtes XML-Dokument wird als gültig oder valide bezeichnet, wenn es den Regeln einer DTD folgt. Ein Dokument kann also wohlgeformt und nicht gültig sein, aber niemals gültig und nicht wohlgeformt. Außerdem ergibt sich, daß ein Dokument immer nur bezüglich einer DTD, und nicht von sich aus gültig sein kann.

Page 11: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany11

XML - Grundlegendes• Kommentar

<!--Kommentar-->

• Ein XML Dokument besteht aus 2 Teilen: – dem Prolog (Er kann aus der Versionsangabe und DTD bestehen;

kann aber auch leer sein.) – und den eigentlichen Elementen.

• Die Versionsangabe

<?xml version="1.0" encoding="UTF-8"?>

• Die DTD dient ja quasi als Schablone nach deren Muster man dann die XML-Dokumente baut.

Page 12: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany12

XML• Es gibt zwei Möglichkeiten eine DTD in ein XML-

Dokument einzubinden. Bei der internen DTD befinden sich DTD und XML-Dokument in einer Datei.

<?xml version="1.0"?> <!DOCTYPE foo [ <!ELEMENT myElement (#PCDATA)> ]> Nach dem [ folgt hier schon die Definition eines

Elementes. • Bei einer externen DTD befinden sich DTD und XML-

Dokument in getrennten Dateien, was bei großen Dokumenten durchaus praktisch ist. Das XML-Dokument enthält dann nur einen Verweis auf die DTD.

• <?xml version="1.0"><!DOCTYPE foo SYSTEM "foo.dtd">

Ein XML-Parser wird in einer Datei namens foo.dtd nach einer DTD suchen.

Es wird ein Element name de-finiert, der nur Text (parsed character data) – #PCDATA enthalten darf.

Page 13: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany13

XMLBeide Formen der DTD können auch gemischt vorkommen:

<?xml version="1.0"?><!DOCTYPE foo SYSTEM "foo.dtd" [ <!ELEMENT myELEMENT (#PCDATA)>]>

Der Parser wird an dieser Stelle beide DTD's zusammenfassen, und als eine behandeln.

Zusammenfasung: Der Prolog besteht aus der XML-Versionsangabe und einem Verweis auf die DTD oder der DTD selbst. Beide Elemente sind optional.

Page 14: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany14

Wurzelelement

Grundsätzlich gilt die Regel, daß der Name, der in der Dokumenttypdeklaration auftaucht, also in unserem Fall foo, der des Wurzelelementes sein muß. Das Wurzelelement ist ein Tag, der alle anderen Tags enthält (mehr dazu im nächsten Teil).

Page 15: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany15

ElementeElemente sind die einfachsten und häufigsten Bestandteile von XML. Jedes XML-Dokument hat EIN Wurzelelement, das alle anderen Elemente enthält.

<?xml version="1.0"?><buch>Der Herr der Ringe</buch><autor><vorname>John Ronald Reuel</vorname><nachname>Tolkien</nachname></autor>

Dieses Beispiel wäre also KEIN wohlgeformtes XML-Dokument, da es zwei Wurzelelemente (oder, je nach Betrachtungsweise, kein Wurzelelement) besitzt, nämlich <buch> und <autor>.

Page 16: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany16

Was ist ein XML Dokument?

Ein grundlegendes XML Dokument ist einfach ein XML Element, das verschachtelte XML Elemente enthalten kann. Zum Beispiel ist das untenstehende XML Element "buecher" ein gültiges XML Dokument.

<buecher>   <buch isbn="0345374827">     <titel>The Great Shark Hunt</titel>     <autor>Hunter S. Thompson</autor>   </buch> </buecher>

Page 17: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany17

Leere und nichtleere Elemententypen

Grundsätzlich gibt es zwei verschiedene Elemente: nichtleere undleere. Für die leeren Elemente gibt es zwei Schreibweisen, die völlig gleichwertig sind.

<nichtLeer>Inhalt</nichtLeer>

<leeresElement></leeresElement><leeresElement2/>

Page 18: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany18

Definition eines Elements in der DTD

Nichtleere Elemente unterschiedliche Inhalte haben können: Text, weitere Elemente oder beides.

<!ELEMENT name (#PCDATA)>

definiert ein Element name, das nur Text (parsed character data) enthalten darf.

Page 19: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany19

Definition eines Elements in der DTD (2)

<!ELEMENT titel (#PCDATA)><!ELEMENT autor (#PCDATA)>

<!ELEMENT buch (titel, autor)>

Hier werden zwei Elemente titel und autor definiert (beide Text). Das Element buch wird so definiert, daß es in den XML-Dokumenten dann diese beiden Elemente in dieser Reihenfolge genau einmal enthalten muss. Man kann also Anzahl und Reihenfolge der Child-Elemente bestimmen.

Page 20: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany20

Definition eines Elements in der DTD (3)

Der Operator „|“ (Bedeutung: oder).

<!ELEMENT anschrift (firma | name), strasse, ort, email><!ELEMENT firma (#PCDATA)><!ELEMENT name (#PCDATA)><!ELEMENT strasse (#PCDATA)><!ELEMENT ort (#PCDATA)><!ELEMENT email (#PCDATA)>

Hier können wir zwischen einem Firmennamen und dem Namen einer Person wählen, müssen dann aber Straße, Ort und email Adresse angeben.

Page 21: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany21

Definition eines Elements in der DTD (3)

Es gibt Menschen mit mehreren email Adressen, und auch welche ohne . Als eine Lösung gibt es folgende Operatoren:

? Das Objekt ist optional, kann also null oder einmal auftreten.* Das Objekt ist optional, kann aber beliebig oft auftreten.+ Das Objekt muß mindestens einmal auftreten.

Unser Beispiel sollte also besser so aussehen:

<!ELEMENT anschrift (firma | name), strasse, ort, email*>

Die Definition der restlichen Elemente haben wir uns hier gespart, sie verändern sich ja nicht.

Page 22: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany22

Definition eines Elements in der DTD (4)Ein Elementtyp ist jetzt noch ungeklärt: gemischter Inhalt (mixed

content). Gemischter Inhalt bedeutet, daß das Element Text und weitere Elemente enthalten soll. Für diesen Fall gelten einige Besonderheiten bei der Definition:•#PCDATA muß immer an erster Stelle stehen•alle Inhalte müßen mit | verknüpft werden•die gesamte Gruppe muß optional sein, und beliebig oft vorkommen dürfe (also der *-Operator)Im Klartext bedeutet das, daß man weder die Anzahl noch dieReihenfolge der Inhalte eines Elements mit mixed content bestimmen kann. Daher ist nach folgender DTD

<!ELEMENT zitat (#PCDATA)> <!ELEMENT text (#PCDATA | zitat)*>

folgendes XML-Dokument gültig (valid):

Page 23: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany23

Definition eines Elements in der DTD (5)

<text> Heinz Rühmann sagte: <zitat> Ein Pessimist ist ein Mensch, der sich über schlechte Erfahrungen freut, weil sie ihm Recht geben. </zitat> Aber das ist nur eins von vielen Zitaten über Pessimisten.</text>

Page 24: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany24

Definition eines Elements in der DTD (6)

Wie kann man leere Elemente definieren?

<!ELEMENT leer EMPTY>

Analog zu EMPTY gibt es auch noch das Schlüsselwort ANY. Das bedeutet, daß das entsprechende Element alle in der DTD definierten Elemente und PCDATA in jeder Reihenfolge und Anzahl enthalten kann. Also können wir unser Zitat-Text-Beispielnoch einmal vereinfachen:

<!ELEMENT zitat (#PCDATA)><!ELEMENT text ANY>

Page 25: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany25

DTD und das entsprechende DokumentStellen wir uns vor, wir wollen Bücher in XML-Dokumenten fassen.

Zu jedem Buch soll der Titel, und der Inhalt gespeichert werden. Der Inhalt gliedert sich in Kapitel, und diese wiederum in Überschriften, Text und Zitate. Die Anzahl und Reihenfolge von Texten und Zitaten soll beliebig sein.

<!ELEMENT buch (titel, kapitel+)> <!--ein Titel, min. ein Kapitel-->

<!ELEMENT titel (#PCDATA)><!ELEMENT kapitel (headline, (text | zitat)*)><!--zuerst immer die Überschrift, dann Text/Zitate in beliebiger Folge-->

<!ELEMENT headline (#PCDATA)><!ELEMENT text (#PCDATA)><!ELEMENT zitat (#PCDATA)>

Die nächste Folie zeigt ein XML-Dokument von diesem Typ:

Page 26: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany26

DTD und das entsprechende Dokument (2)<?xml version="1.0"?><!DOCTYPE buch SYSTEM "buch.dtd"><buch><titel>Mein erstes Buch</titel> <kapitel> <headline>Einleitung</headline><text>Einleitungen sind immer ein sehr schwieriger Teil. Und damitjetzt auch noch ein Zitat in dieses Beispiel kommt:</text><zitat>Optimisten glauben, daß wir in der besten aller Welten leben.Pessimisten befürchten, daß das stimmt.</zitat> <text>Nun kann man hier noch 'ne Menge Text schreiben, muß man aber nicht. Auch das Zitieren wäre nach Lust und Laune möglich. Nur Überschriften dürfen nicht mehr kommen.</text></kapitel>

</buch>

Page 27: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany27

Attribute

Attribute sind zusätzliche Informationen zu Elementen. Sie können beispielsweise so aussehen:

<img src="meinBild.jpg" alt="bild" heigth="12" width="150"/><person sex="m"><name>der Weihnachtsmann</name></person>

Das <img>-Element könnte genausogut so aussehen:

<img><src>meinBild</src><alt>"bild"</alt><height>12</height><width>150</width></img>

Page 28: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany28

Attribute (2)Wie kann man nun Attribute in der DTD definieren?

<!ATTLIST img src CDATA #REQUIREDalt CDATA #REQUIRED

height CDATA #IMPLIED width CDATA #IMPLIED

>

ATTLIST img sagt nur aus, daß es sich im Folgenden um eine Attributliste zum Element img handelt. Danach werden die einzelnen Attribute aufgelistet, und zwar zuerst der Name des Attributes, dann der Typ (in diesem Fall CDATA, also Zeichendaten). Zum Schluss folgt noch ein Modifikator, der angibt, ob das Attribut erforderlich ist (#REQUIRED), oder optional (#IMPLIED). Es gibt noch eine dritte Möglichkeit für den Modifikator: #FIXED.

Page 29: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany29

Attribute (3)<!ATTLIST steuern comment CDATA #FIXED "zu hoch">

Das bedeutet also, daß zum Element <steuern> ein Attribut comment definiert wird, das immer den Wert "zu hoch" hat.

<steuern comment="zu hoch"/> <steuern/> <!--entspricht der ersten Zeile--> <steuern comment="zu niedrig"> <!--Fehler-->

Wenn man keinen Modifikator angibt, muß man eine Vorgabe für den Attributwert machen.

<!ATTLIST fenster material "glas">

Dies würde also bedeuten, daß wenn man folgende Zeile schreibt, das Attribut material den Attributwert glas hat: <fenster/>

<fenster material="kunststoff"/> <!--das Attribut wird anders belegt-->

Page 30: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany30

Attributtypen

CDATA beliebige ZeichenkettenID Die ID muß im gesamten Dokument einmalig sein, damit jede ID eindeutig ein Element identifiziert. Deshalb kann eine ID nur #REQUIRED oder #IMPLIED sein.IDREF IDREF muß eine Zeichenkette sein, die irgendwo im Dokument eine ID ist, also quasi auf diese verweisen. Mit ID und IDREF können also zwei unterschiedliche Elemente einander zugeordnet werden.IDREFS Eine Liste von Referenzen. Als Trennzeichen fungiert das Leerzeichen. ENTITY Der Attributwert muß mit dem Namen einer externen, ungeparsten Entity übereinstimmen.ENTITIES Eine Liste. Als Trennzeichen fungiert das Leerzeichen.

Page 31: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany31

Attributtypen (2)

NMTOKEN (ein einzelnes Token) Entpricht CDATA mit ein paar Einschränkungen:

•darf nur mit A-Z, a-z, 0-9 oder _ anfangen, danach sind auch ".", "-", "," erlaubt •es dürfen keine Leerzeichen oder Markup enthalten sein •darf nicht mit xml anfangen, egal ob groß oder klein.

NMTOKENS eine Liste von Token (mit Trennzeichen Leerzeichen).NOTATION Der Wert eines Attributs vom Typ NOTATION, ist der Name einer Notation. Was Notationen sind, dazu später mehr.

NOTATIONS eine Liste von notationen.

Page 32: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany32

Attributtypen (3)

Eigentlich gibt es noch einen elften Attributtyp, nämlich den Aufzählungstyp. Dieser hat allerdings kein Schlüsselwort (wie CDATA), und kommt mit einer anderen Syntax daher:

<!ATTLIST person sex (m | w | transsexuell) #REQUIRED>

Hier kann das Attribut sex nur die Werte m, w oder transsexuell annehmen.

Page 33: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany33

Attribute - abschließendes Beispiel

<!ELEMENT bibliothek (buch)+>

<!ELEMENT buch (titel, autor, inhalt)><!ATTLIST buch genre (Sachbuch | Roman | Fantasy) "Sachbuch" verlag CDATA #FIXED "meinVerlag" isbn ID #REQUIRED neuauflageVon IDREF "null">

<!ELEMENT titel (#PCDATA)>

<!ELEMENT autor (#PCDATA)><!ATTLIST autor geschlecht (m | w) #REQUIRED>

<!ELEMENT inhalt (#PCDATA)>

Page 34: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany34

Attribute - abschließendes Beispiel

Jedem Buch wird hier ein eindeutiger Schlüssel zugewiesen, nämlich seine ISBN. Dabei wird angenommen, daß in dieserBibliothek jeweils nur EIN Exemplar eines Buches steht, und deshalb ISBN's nicht doppelt vorkommen. Das Attribut neuauflageVon kann sich dann eindeutig auf eine ISBN beziehen. Sollte dieses Attribut nicht gesetzt werden, beispielsweise weil es die Erstauflage ist, ist der Defaultwert null. null hat keine besondere Bedeutung (bzw. ist kein von XML reserviertes Wort), und muß dann von der Anwendung entsprechend interpretiert werden.

Page 35: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany35

Eine Instanz unserer DTD <?xml version="1.0"?><!DOCTYPE bibliothek SYSTEM "bibliothek.dtd">

<bibliothek><buch genre="Fantasy" isbn="3-608-95855-X"><titel>Der Herr der Ringe</titel><autor geschlecht="m">J.R.R. Tolkien</autor><inhalt>viel Text</inhalt></buch>

<buch isbn="3-8273-1330-9"><titel>XML in der Praxis</titel><autor geschlecht="m">Behme, Mintert</autor><inhalt>Inhalt</inhalt></buch>

<buch genre="Fantasy" isbn="5559110815" neuauflageVon="3-608-95855-X"><titel>Der Herr der Ringe</titel><autor geschlecht="m">J.R.R. Tolkien</autor><inhalt>vielText</inhalt></buch></bibliothek>

Page 36: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany36

EntitiesEntities sind im Prinzip Ersetzungen, das heißt, jedes Entity hat einen Namen und einen Ersetzungstext. Ersetzungstextist vielleicht nicht ganz korrekt, denn Entities können auch Bilder, Sounds etc. sein. Wenn nun irgendwo der Name des Entities (die Entityreferenz) auftaucht, setzt der Parser dort den Ersetzungstext ein.

<!ENTITY fhtw "Fachhochschule fuer Technik und Wirtschaft Berlin">

Referenziert wird dieses Entity mit &fhtw; Dort wo die Entityreferenz auftaucht, wird der Ersetzungstext eingesetzt.

<student hochschuhle="&fhtw;"><uni>&fhtw;</uni></student>

Page 37: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany37

Entities – Mehr Details

• Entities sind im Prinzip Ersetzungen, das heißt, jedes Entity hat einen Namen und einen Ersetzungsobjekt. Entities können Texte, Bilder, Sounds etc. sein. Wenn nun irgendwo der Name des Entities (die Entityreferenz) auftaucht, setzt der Parser dort den Ersetzungsobjekt ein.

• Es gibt drei verschiedene Kriterien nach denen Entities gegliedert werden:

– allgemeine vs ParameterentitiesAllgemeine Entities bzw. deren Entityreferenzen können nur im XML-Dokument auftauchen. Im Gegensatz dazu gibt es Parameterentities nur in der DTD. Beide Entities werden natürlich wie gewohnt in der DTD deklariert.

– geparste vs ungeparste EntitiesReferenzen auf geparste Entities werden vom Parser zuerst ersetzt, und danach analysiert, das heißt auf Markup durchsucht. Ungeparste Entities werden vom Parser nicht analysiert. Ungeparste Entities müssen an eine externe Anwendung weitergegeben werden, um verarbeitet zu werden.

– externe vs interne EntitiesDer Inhalt (Ersetzungstext) eines externes Entity ist nur durch Zugriff auf eine andere Datei zu bestimmen. Diese Datei kann zum Beispiel ein Bild, ein Sound oder auch eine XML-Datei sein. Bei einem internen Entity wird der Inhalt bei der Deklaration bestimmt.

Page 38: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany38

Internes, geparstes, allgemeines Entitiy

• <!ENTITY fhtw "Fachhochschule fuer Technik und Wirtschaft Berlin">

Bei der Deklaration folgt nach dem Schlüsselwort ENTITY der Name des Entities und dann der Ersetzungstext.

&fhtw;

Die Referenz besteht also aus dem &, gefolgt vom Namen des Entities. Abgeschlossen wird das ganze durch das ;.

Dort wo die Entityreferenz auftaucht, wird der Ersetzungstext eingesetzt. Die Entityreferenz darf an allen Stellen stehen, in denen im XML-Dokument Text erlaubt ist:

<student hochschuhle="&fhtw;"><uni>&fhtw;</uni></student>

Page 39: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany39

Internes, geparstes, Parameterentity <!ENTITY % headings "H1 | H2 | H3 | H4 | H5 | H6">

Der einzige Unterschied zur Deklaration eines allgemeinen Entities besteht in dem %. Auch die Entityreferenz verwendet das %:

%headings;

Die Verwendung erfolgt ähnlich wie beim allgemeinen Entity:

<?xml version="1.0"><!DOCTYPE body [<!ENTITY % headings "H1|H2|H3|H4|H5|H6"><!ENTITY % list "UL|OL|DIR|MENU">

<!ELEMENT BODY (%headings;|P|%list;|PRE|HR|IMG)*>]>

<BODY><H1>Überschrift</H1></BODY>

Page 40: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany40

Externes, geparstes, allgemeines Entity <!ENTITY kapitel1 SYSTEM "www.frag-mich-

mal.de/kap1.xml">

Nach dem Namen des Entities folgt hier das Schlüsselwort SYSTEM und danach die Angabe wo das externe Entity gefunden werden kann

&kapitel1;

Page 41: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany41

Externes, geparstes Parameterentity

<!ENTITY % buch SYSTEM "www.frag-mich-nicht.de/buch.dtd">

Die Entityreferenz ist:

%buch;

Page 42: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany42

Externes, ungeparstes, allgemeines Entity<!ENTITY bild SYSTEM "/bilder/foto.jpg" NDATA jpeg>

NDATA - dies sagt dem Parser eigentlich nur, daß es sich nicht um interpretierbare Daten (im Sinne von XML) handelt. Das abschließende jpeg ist ein Name (der natürlich frei vergeben werden kann), der mit dem Namen einer Notation übereinstimmen muß (dazu kommen wir gleich).

Auch die Entityreferenz wird anders verwendet als bisher. Sie darf nämlich nur als Attributwert eines Attributes vom Typ Entity auftreten.

<!ENTITY passfoto SYSTEM "/bilder/foto.jpg" NDATA jpeg><!ELEMENT person EMPTY><!ATTLIST person bild ENTITY #REQUIRED>

Im XML-Dokument könnte dann stehen:<person bild="passfoto"/> Der Parser wird an dieser Stelle merken, daß bild vom Typ ENTITY ist

und nach einem Entity namens passfoto suchen. In der Deklaration steht nun wo der Parser das entsprechende Bild finden kann. Was macht denn der Parser nun mit diesem Entity macht?

An dieser Stelle kommen die Notationen ins Spiel.

Page 43: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany43

NotationenEine Notation verbindet einen Namen mit einer Anwendung. Beispielsweise ließe sich der Name jpeg mit der Anwendung bildbetrachter.exe verbinden.

<!NOTATION jpeg SYSTEM "http://www.bilder.de/bildbetrachter.exe">

Der Parser würde also alle externen Entities mit dem Namen jpeg an die Anwendung bildbetrachter.exe übergeben.

Um das alles zusammen zu fassen, auf der nächsten Folie ein kleines Beispiel zu Entities und Notationen:

Page 44: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany44

Notationen (2)

<?xml version="1.0"?><!DOCTYPE person [<!ENTITY passfoto SYSTEM "/bilder/foto.jpg" NDATA jpeg><!NOTATION jpeg SYSTEM "http://www.bilder.de/bildbetrachter.exe">

<!ELEMENT person (name, vorname)><!ATTLIST person bild ENTITY #REQUIRED>

<!ELEMENT name (#PCDATA)><!ELEMENT vorname (#PCDATA)>]>

<person bild="passfoto"><name>Grube</name><vorname>Claire</vorname></person>

Bemerkung:NDATA = non-parsed data

Page 45: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany45

Namensräume• XML 1.0 sieht vor, dass eine DTD extern sein kann, und

ermöglicht auf diese Weise, dass verschiedene Dokumente dasselbe Vokabular benutzen. Es war jedoch nicht vorgesehen, verschiedene Vokabulare zu kombinieren.

• Wenn z.B. für Bücher ein Standardvokabular (BS) definiert ist, kann BS benutzt werden, um es in die Angebote eines Buchversands einzubinden, zusammen mit spezifischen Daten des Vehandels, die Wiederum mit einem anderen Vokabular beschrieben sind.

• Auch im XML-Umfeld selbst kommen Standardvokabulare vor, um z.B. Transformationsanweisungen in ein Dokument einzubinden. Nun kann man mit einem Dokument, das verschiedene Vokabulare enthält, nur schwer umgehen, wenn sich die einzelnen Namen von Elementen und Attributen nicht den jeweiligen Vokabularen zuordnen lassen. Insbesondere kann es vorkommen, dass 2 Vokabulare dieselben Namen (doch mit verschiedener Bedeutung) enthalten.

Page 46: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany46

Namensräume - Beispiele

Eine häufige Anwendung von Namensräumen ist die Nutzung von HTML-Tagsin XML.

<?xml version=“1.0“?><Hallo xmlns:html=“http://www.w3.org/TR/REC-html40“><Ausgabe>XML</Ausgabe><html:h2>Eine Überschrift mit HTML </html:h2></Hallo>

Durch das xmlns:html= ... Attribut wird im Wurzelelement der Namensraumhtml definiert (es wird dem Browser mitgeteilt, dass HTML-Tags innerhalb des XML-Dokuments verwendet werden).

Durch die URI “http://www.w3.org/TR/REC-html40“ wird die genaue Adresse einer HTML4Spezifikation angegeben, damit der Raum html genauestens definiert werden kann.

Page 47: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany47

Namensräume – Beispiele (2)Angenommen, die beiden folgenden Elementgruppen kämen aus zwei verschie-denen DTDs, nämlich books und owners:

<BOOK> <TITLE>Tauben im Gras</TITLE> <AUTHOR>Wolfgang Koeppen</AUTHOR></BOOK><OWNER> <NAME>Hans Meier</NAME> <TITLE>Dr.</TITLE></OWNER>

Das Problem wird deutlich: beide Elemente haben eine semantisch logische Bedeutung, sind aber quasi Homonyme. Der erste Tag bezieht sich auf den Buchtitel, der zweite auf den akademischen Titel des Besitzers.

Lösung (nächste Folie):

Page 48: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany48

Namensräume – Beispiele (3)

. . .xmlns:books ="http://www.jcpohl.de/tr/books">xmlns:owners ="http://www.jcpohl.de/tr/owners">xmlns=default-name-space. . .

<books:BOOK> <books:TITLE>Tauben im Gras</books:TITLE> <books:AUTHOR>Wolfgang Koeppen</books:AUTHOR></books:BOOK><owners:OWNER> <owners:NAME>Hans Meier</owners:NAME> <owners:TITLE>Dr.</owners:TITLE></owners:OWNER>

default-name-space – definiert als Vorbelegung und gilt dann für alle nicht mit einem Prefix versehenen Elementdaten

Page 49: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany49

XML-Schema

Der W3C-Standard XML-Schema ist eine XML-Sprache zur Definition von XML-Vokabularen. Als Nachfolger der bekannten Document Type Definitions (DTD) markiert XML Schema den entscheidenden Wendepunkt von der bisherigen dokumentenorientierten Sichtweise hin zu einer datenorientierten .

Technisch gesehen erweitern sich durch XML Schema die Ausdrucksmöglich-keiten bei der Formulierung neuer XML-Vokabulare entscheidend. Einerseits hinsichtlich inhaltlicher Merkmale wie Datentypen; andererseits auch in Richtung struktureller Merkmale. So halten bekannte Konzepte aus den Programmier- und Datenbanksprachen Einzug. Inzwischen haben namhafte Firmen und Initiativen ihre Unterstützung des am 2. Mai 2001 durch das W3C verabschiedeten Standards erklärt; zu Lasten anfänglich konkurrieren-der proprietärer Vorschläge.

Page 50: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany50

Parser

Es gibt grundsätzlich 2 Möglichkeiten, XML-Dokumente zu parsen, d.h. von einem Programm aus die gespeicherten XML-Daten in für das Programm sinnvolle Strukturen umzuwandeln:

1. Tree based parser, DOM – Sie lesen das komplette XML-Dokument ein, validieren es und bauen daraus eine baumartige Struktur (z.B. DOM) zusammen. Dieser Baum kann dann vom Programm benutzt werden. Umgekehrt gibt es auch XML-Schreiber, welche eine DOM-Baumstruktur in ein XML-Dokument umwandeln.

DOM (Document Object Model) ist ein Objektmodell, es beschreibt die in einem Dokument einer bestimmten XML-Anwendung enthaltenen Elemente als Objekte, für die Verarbeitung mit einer objekt-orientierten Programmiersprache wie z.B. Java. DOM liefert eine komplette Baumstruktur aller Objekte eines XML-Dokuments und eignet sich daher nicht für extrem große XML-Files.

Beispiel – nächste Folie

Page 51: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany51

Beispiel für DOM

<?xml version=“1.0“?> <Tier> <Name>Hausziege</Name> <Beschreibung> Die Hausziege ist eng verwandt mit dem

<Verweis>Hausschaf</Verweis> </Beschreibung></Tier> Document

Tier

NameBeschreibung

Verweis

Hausschaf

Die Hausziege ist eng verwandt mit dem

Hausziege

Page 52: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany52

Parser (2)1. Event based parser, SAX (Simple API for XML) – Sie arbeiten

asynchron. Sie werden einmal gestartet und erzugen dann für jedes Tag einen Event. Das Programm kann dann schon, bevor das komplette Dokument eingelesen wurde, erste Daten darstellen. Event based parsing macht also vor allem im Bereich von WAN Sinn, beispielsweise im Internet, wo die Daten relativ langsam über die Leitungen gehen.

Für unser Beispiel (Dokument Tier) werden folgende Ereignisse ausgelöst:start documentstart element: Tierstart element: Namecharacters: Hausziege

end element: Beschreibungcharacters: Hausziege ist eng verwandt mit demstart element: Verweischaracters: Hausschafend element: Verweisend element: Beschreibungend element: Tierend document

Page 53: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany53

Klassifikation von XML-Dokumenten

1. Datenorientierte XML-Dokumente: enthalten stark strukturierte Daten wie sie typischerweise etwa in relationalen DB abgespeichert sind, z.B. Telefon-bücher, Börsenkurse, Fahrpläne, Bestellungen.

2. Textorientierte XML-Dokumente: es handelt sich um die XML-Verpackung von Texten, z.B. Verträge, Zeit-schriftenartikel, Gebrauchanweisungen, Präsentationen, Bücher, E-Mail, Theaterstücke und auch Homepages im Internet. Oft werden solche Dokumente manuell erstellt oder aus PDF oder einem anderen Format nach XML konventiert. 70% der relevanten Geschäftsinformation ist in Textdokumenten.

3. Mischformen

Page 54: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany54

Beispiele für den Einsatz von XMLDie Anzahl von verfügbaren XML-Vokabularen nimmt

immer nochsprunghaft zu.

• Publishing and Content Management

XML-Dokumente können durch Anwendung von XSLT-Stylesheets zur Präsentation aufbereitet werden.Auf diese Weise kann aus einem XML-Dokument eine ganze Palette von Ausgabedokumenten in verschiedenen Formatenauf verschiedenen Medien entstehen (z.B. WAP, Internet, Braille, CD, Drucker)

Page 55: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany55

Beispiele für den Einsatz von XML (2)

2. Elektronischer Handel (e-commerce) : business to business,B2B; business to consumer, B2C.

3. Workflow und integrierte Geschäftsprozesse – Integrationseffekte: an allen Stellen wird ein einheitliches Format verarbeitet; der Workflow kann selbst in XML beschrieben werden.

4. XML und Metadaten – RDF (Resource Description Framework): primär wurde zur Verwaltung von Metadaten über Web-Ressourcen entworfen.

BeispielAussagen: „Der 1. FC Kaiserslauten war 1998 Deutscher Meister. Sein Stadion heißt Fritz-Walter-Stadion“.

Die entsprechende RDF Notation –> die nächste Folie.

Page 56: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany56

Beispiele für den Einsatz von XML (3)

<?xml version=m“1.0“?><rdf:RDF xmlns:rdf= "http://www.w3.org/1999/02/22-rdf-syntax-ns#“

xmlns:fb=“http://fussballschema.de/schema“> <rdf:Description rdf:about=“http://www.fck.de“>

<fb:deutscher-meister>1998</fb:deutscher-meister> <fb:stadion>Fritz-Walter-Stadion</fb:stadion>

</rdf:Description></rdf:RDF>

Page 57: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany57

Beispiele für den Einsatz von XML (4)

5. XML und Multimedia: XHTML – eine Neudefinition von HTML 4.0 mit XML-Mitteln; SMIL (Synchronized Multimedia Integration Language) –Beschreibung von Multimedia-Präsentationen im Web, MPEG-7 – Beschreibung von audio-visuellen Inhalten.

6. Gesundheitswesen: HL7 – XML Standard für den Austausch von Krankenhausdaten.

7. Komplex strukturierte Daten: BIOML – ein XML-Vokabular, mit dem polymere Strukturen beschrieben werden können; CML – Chemical Markup Language für Beschreibung von Molekülstrukturen und anderer chemischen Formeln

8. Web Services: WSDL (Web Service Description Language); SOAP (Simple Object Access Protocol)

Page 58: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany58

Einführung in die XML

Datenbanktechnologie

Page 59: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany59

XML Speicherung• In File-Systemen: Für kleinere Dateigrößen ist es OK, für

größere Anwendungen nicht. Andere Problemaspekte: concurrency, Versionsmanagement, Sicherheit, Datenduplizität, usw.

• In relationalen DB: Jedes rel. DB Produkt kann benutzt werden – XML ist auf ähnliche Weise wie Bilder oder text gespeichert. ORACLE hat 8i erweitert – XML-Dokumente können in einem Feld gespeichert werden und dann as XML abgefragt (durch erweiterte SELECT Anweisungen, oder ein Tool konvertiert automatisch SQL Abfrage auf XML); record in einer Tabelle kann ein Feld haben, das ein XML Dokument enthält – andere Felder könnten Information über das Dokument enthalten (Wer und wann änderte es? Ist das Dokument gesperrt?)

• Objekt-orientierte DB: ihre natürlichen Fähigkeiten ermöglichen mächtige Operationen auf XML Dokumenten.

• XML Datenmagement Systeme (XML DBMS): Sie ermöglichen direkte Zugriffe auf XML Dokumente und ihre Teile.

Page 60: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany60

Relational DBs versus XML

Page 61: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany61

Relational DBs versus XML (2)

Page 62: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany62

Towards Native XML-Databases

Page 63: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany63

Xindice

Page 64: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany64

Xindice (2)

Page 65: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany65

QueriesAnfragesprachen für XML: XML-QL (kommt aus der Forschung), XPath (kommerziele Anwendungen), XQuery (Entwurf eines Standards)

Page 66: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany66

Querying the Database With XPath

Page 67: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany67

Some Example XPath

Page 68: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany68

Some Example XPath (2)

Page 69: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany69

Some Example XPath (3)

ancestors = Vorfahren

Page 70: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany70

Some Example XPath (4)

Page 71: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany71

Some Example XPath (5)

Page 72: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany72

Some Example XPath (6)

Page 73: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany73

Some Example XPath (7)

descendants = Nachkommen

Page 74: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany74

Some Example XPath (8)

Page 75: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany75

Some Example XPath (9)

Page 76: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany76

XPath Operators and Functions

Page 77: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany77

Using XPath Operators and Functions

Page 78: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany78

Java XPathQuery

Page 79: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany79

XUpdate

Page 80: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany80

XUpdate (2)

Page 81: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany81

XUpdate (3)

Page 82: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany82

XML Block Append

Page 83: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany83

A few things you can do with XUpdate

Page 84: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany84

Conclusion

Page 85: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany85

Anhang:

XML-Beispiele

Page 86: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany86

Ein erstes XML-Dokument

<?xml version="1.0" encoding="iso-8859-1"?><adressen><person>    <name>Hans</name>    <telefon>6726</telefon></person><person>    <name>Heinz</name>    <telefon>4456</telefon></person></adressen>

Page 87: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany87

Gesundheit - DTD

<!-- Parameter-Entities der Superklassen --> <!ENTITY % adressAttribute "adressArt, (anschrift | telekommunikation)*"><!ENTITY % parteiAttribute "identifikation, Rolle*, Adresse*"><!ENTITY % rollenAttribute "rollenArt"> <!-- Elemente der Superklassen --> <!ELEMENT adressArt (#PCDATA)> <!ELEMENT identifikation (#PCDATA)> <!ELEMENT rollenArt (#PCDATA)> <!-- Wurzel: Gesundheitswesen --> <!ELEMENT Gesundheitswesen (person* | organisation*) >

<!ELEMENT Person (%parteiAttribute;, gebdat, geschlecht, zuname, vorname)> <!ELEMENT gebdat (#PCDATA)> <!ELEMENT geschlecht (#PCDATA)> <!ELEMENT zuname (#PCDATA)> <!ELEMENT vorname (#PCDATA)>

<!ELEMENT Organisation (%parteiAttribute;, name, Person*, Organisation*)> <!ELEMENT name (#PCDATA)>

<!ELEMENT anschrift (%adressAttribute;, strasse, ort, postleitzahl)> <!ELEMENT strasse (#PCDATA)> <!ELEMENT ort (#PCDATA)> <!ELEMENT postleitzahl (#PCDATA)>

<!ELEMENT telekommunikation (%adressAttribute;, nummer)> <!ELEMENT nummer (#PCDATA)>

<!ELEMENT Rolle (versicherter | leistungserbringer | dienstgeber | kostentraeger | patient)>

<!ELEMENT versicherter (%rollenAttribute;)> <!ELEMENT leistungserbringer (%rollenAttribute;)> <!ELEMENT dienstgeber (%rollenAttribute;)> <!ELEMENT kostentraeger (%rollenAttribute;)> <!ELEMENT patient (%rollenAttribute;, roentgenbild)>

<!ELEMENT roentgenbild (#PCDATA)>

Page 88: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany88

Gesundheit – XML-Dokument

<?xml version="1.0" encoding="ISO-8859-1" ?>   <!DOCTYPE beispiel4 (View Source for full doctype...)> - <Gesundheitswesen> <Person> 

<gebdat>1.12.1976</gebdat>   <geschlecht>m</geschlecht>

<zuname>Mustermann</zuname>   <vorname>Max</vorname>

<Rolle> <versicherter>  <rollenArt>110</rollenArt>   </versicherter> <patient>  <rollenArt>120</rollenArt>  

<roentgenbild>mustermann.gif</roentgenbild>   </patient> 

</Rolle> <anschrift> 

<strasse>Musterstrasse 1</strasse><ort>Wien</ort>  

<postleitzahl>1040</postleitzahl>   </anschrift> <telekommunikation> 

<nummer>069911122233</nummer>   </telekommunikation>  </Person> <Organisation> 

<name>Eisenwaren-Fritz</name> <dienstgeber> 

<rollenArt>130</rollenArt>   </dienstgeber> 

</Organisation>  </Gesundheitswesen>

Page 89: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany89

Kontoauszug - DTD

<!ELEMENT kontoauszug (konto, buchungszeile*, saldoneu)>

<!ATTLIST kontoauszug lfdnr CDATA #REQUIRED> <!ATTLIST kontoauszug datum CDATA #REQUIRED> <!ATTLIST kontoauszug waehrung (ATS|EUR) #REQUIRED>

<!ELEMENT konto (kontonr, inhaber+, kontoart)> <!ELEMENT kontonr (#PCDATA)> <!ELEMENT inhaber (#PCDATA)> <!ELEMENT kontoart (#PCDATA)>

<!ELEMENT buchungszeile (datum, buchungsdatum, buchungstext, betrag)> <!ATTLIST buchungszeile id ID #REQUIRED>

<!ELEMENT datum (#PCDATA)><!ELEMENT buchungsdatum (#PCDATA)> <!ELEMENT buchungstext (#PCDATA)> <!ELEMENT betrag (#PCDATA)>

<!ELEMENT saldoneu (#PCDATA)>

Page 90: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany90

Kontoauszug – XML-

Dokument

<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE kontoauszug (View Source for full doctype...)> <kontoauszug lfdnr="008" datum="30.07.2001" waehrung="ATS"> <konto> 

<kontonr>12345678900</kontonr>   <inhaber>Max Mustermann</inhaber>   <kontoart>Studentenkonto</kontoart>  

</konto> <buchungszeile id="id0001"> 

<datum>13.07.</datum>   <buchungsdatum>16.07.</buchungsdatum>   <buchungstext>Spar 1040 K1</buchungstext>   <betrag>-151.30</betrag>  

</buchungszeile> <buchungszeile id="id0002"> 

<datum>14.07.</datum>   <buchungsdatum>16.07.</buchungsdatum>   <buchungstext>Bankomat 26021 Karte 1</buchungstext> <betrag>-700.00</betrag>  

</buchungszeile> <buchungszeile id="id0003"> 

<datum>21.07.</datum>   <buchungsdatum>23.07.</buchungsdatum>   <buchungstext>Saturn 1006P K1</buchungstext>   <betrag>-199.00</betrag>

</buchungszeile> <buchungszeile id="id0004"> 

<datum>26.07.</datum>   <buchungsdatum>27.07.</buchungsdatum>   <buchungstext>Amadeus 0019P K1</buchungstext>   <betrag>-1282.00</betrag>  

</buchungszeile>  <saldoneu>5367.40</saldoneu>   </kontoauszug>

Page 91: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany91

Mitarbeiter - DTD

<!ELEMENT mb-datenbank (abteilung)+> <!ELEMENT abteilung (name, angehoerige)> <!ELEMENT name (#PCDATA)> <!ELEMENT angehoerige (mitarbeiter)+> <!ELEMENT mitarbeiter (nachname, telefon, untergebene?)> <!ELEMENT nachname (#PCDATA)> <!ELEMENT telefon (#PCDATA)> <!ELEMENT untergebene (mitarbeiter)+>

Page 92: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany92

Mitarbeiter – XML-

Dokument

<?xml version="1.0" encoding="iso-8859-1" ?>  <!DOCTYPE mb-datenbank (View Source for full doctype...)> <mb-datenbank> <abteilung> 

<name>IT-Abteilung</name> <angehoerige>

<mitarbeiter>  <nachname>Meier</nachname>   <telefon>3421</telefon>   </mitarbeiter>

<mitarbeiter>  <nachname>Müller</nachname>   <telefon>5564</telefon>  

</mitarbeiter> <mitarbeiter>  <nachname>Hinkelstein</nachname> <telefon>3456</telefon> <untergebene>

<mitarbeiter>  <nachname>Schulz</nachname>   <telefon>3321</telefon>   </mitarbeiter> <mitarbeiter>  <nachname>Zupul</nachname>   <telefon>6768</telefon>

<untergebene> <mitarbeiter> 

<nachname>Arletz</nachname>  <telefon>7593</telefon>  

</mitarbeiter>  </untergebene>

</mitarbeiter>  </untergebene>  </mitarbeiter>  </angehoerige>  </abteilung>  </mb-datenbank>

Page 93: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany93

Überweisung - DTD

<!-- Wurzel – Elementtyp: UEBERWEISUNG -->

<!ELEMENT UEBERWEISUNG (AUFTRAGGEBER, EMPFAENGER, VERWENDUCSZWECK?, BETRAG)>

<!-- Attributliste von UEBERWEISUNG -->

<!ATTLIST UEBERWEISUNG id ID #REQUIRED><!ATTLIST UEBERWEISUNG valuta CDATA #IMPLIED>

<!-- Kinder von UEBERWEISUNG -->

<!ENTITX % kunde “(NAME, TITEL*, KONTO)“>

<!-- Kinder von kunde --><!ELEMENT NAME (#PCDATA)><!ELEMENT KONTO (NUMBER, BLZ, BANK)>

<!--Kinder von KONTO --><!ELEMENT NUMBER (#PCDATA)><!ELEMENT BLZ (#PCDATA)><!ELEMENT BANK (#PCDATA)>

<!ELEMENT AUFTRAGGEBER %kunde;><!ELEMENT EMPFAENGER %kunde;><!ELEMENT VEWENDUNGSZWECK (#PCDATA|EM)*>

<!-- Kinder von VERWENDUNGSZWECK/ Mixed Content

<!ELEMENT EM (#PCDATA)>

<!ELEMENT BETRAG (EUR|ATS)><!-- Kinder von BETRAG

<!ELEMENT EUR (#PCDATA)> <!ELEMENT ATS (#PCDATA)>

Page 94: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany94

Überweisung – XML-Dokument

<?xml version=„1.0“ encoding=„ISO-8859-1“ ?><!DOCTYPE UEBERWEISUNG SYSTEM “ueberweisung.dtd“><UEBERWEISUNG id=“id4711“ valuta=“17.02.2000-15:37“> <AUFTRAGGEBER>

<NAME>Wolfgang Schmidt</NAME><TITEL>Univ.-Prof.</TITEL><TITEL>Dr.-tech.</TITEL><TITEL>Dipl.-Ing.</TITEL>

<KONTO> <NUMBER>47110815</NUMBER>

<BLZ>11000</BLZ> <BANK>CREDITANSTALT</BANK>

</KONTO> </AUFTRAGGEBER> <EMPFAENGER>

<NAME>Finanzamt Baden</NAME><KONTO> <NUMBER>08154711</NUMBER> <BLZ>54321</BLZ> <BANK>PSK</BANK></KONTO>

</EMPFAENGER> <VERWENDUNGZWECK> Steuernachzahlung

<EM>17734345546</EM> </VERWENDUNGSZWECK> <BETRAG> <EUR>123</EUR> </BETRAG></UEBERWEISUNG>

Page 95: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany95

Drehbuch - DTD

<!ENTITY % darsteller "ER | SIE | ES | ERZAEHLER">

<!ENTITY % standardattribute "TIMECODE CDATA #IMPLIED AUTOR CDATA #IMPLIED DREHTAG CDATA #IMPLIED">

<!ELEMENT DREHBUCH (TITEL, REGIEANWEISUNG+, (%darsteller; | KLAPPE)*)>

<!ELEMENT TITEL (#PCDATA)><!ATTLIST TITEL %standardattribute;>

<!ELEMENT REGIEANWEISUNG (#PCDATA)><!ATTLIST REGIEANWEISUNG %standardattribute;>

<!ELEMENT KLAPPE EMPTY><!ATTLIST KLAPPE SZENE ID #REQUIRED COLOR (rot|blau|gelb) "rot" %standardattribute;>

<!ELEMENT ER (#PCDATA | SCHMALZIG)*><!ATTLIST ER %standardattribute;>

Page 96: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany96

Drehbuch – XML-Dokume

nt

<?xml version="1.0"?><!DOCTYPE DREHBUCH SYSTEM "drehbuch.dtd">

<DREHBUCH> <TITEL> Die Fluss-Szene </TITEL> <REGIEANWEISUNG> Er trifft sie am Fluss </REGIEANWEISUNG> <KLAPPE SZENE="1A.B"/> <ER>Schoener Sonnenuntergang heute...</ER> <SIE> Ja, ich <SCHMALZIG>liebe</SCHMALZIG> Sonnenuntergaenge </SIE> <KLAPPE SZENE="1A.E" COLOR="blau"/></DREHBUCH>

Page 97: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany97

Lehrstuhlbeschreibung

Aufgabe: [Lehrstuhlbeschreibung in XML (mit DTD)]

Innerhalb der folgenden Lehrstuhl-DTD werden die Daten wie folgt strukturiert: Der Lehrstuhl besteht aus einem inhaber, einem sekretariat und projekten (keines, eins oder mehrere). Ein projekt wird wiederum spezifiziert durch einen titel, eine beschreibung, einen leiter, eine homepage und eine (möglicherweise leere) Menge von mitarbeitern. Die restlichen Elemente werden vom Typ PCDATA deklariert, d.h. sie werden ebenfalls noch auf eventuell enthaltene weitere Tags geparst (wenn dies auch in diesem kleinen Beispiel nicht notwendig ist).

Page 98: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany98

DTD

<?xml version="1.0" standalone="yes"?>

<!DOCTYPE lehrstuhl [

<!ELEMENT lehrstuhl (inhaber, sekretariat, projekt*)>

<!ELEMENT inhaber (#PCDATA)>

<!ELEMENT sekretariat (#PCDATA)>

<!ELEMENT projekt (titel, beschreibung, leiter, homepage, mitarbeiter*)>

<!ELEMENT titel (#PCDATA)>

<!ELEMENT beschreibung (#PCDATA)>

<!ELEMENT leiter (#PCDATA)>

<!ELEMENT mitarbeiter (#PCDATA)>

<!ELEMENT homepage (#PCDATA)>

]>

Page 99: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany99

Damit ist die im folgenden verwendete DTD abgeschlossen. Die Informationen über den Lehrstuhl Wahlster können dann folgendermaßen syntaktisch korrekt (überprüfbar durch den in der Aufgabenstellung angegebenen XML-Validator) modelliert werden:

DTD (2)

Page 100: Institute for Software Science – University of ViennaP.Brezany XML und Datenbanken Peter Brezany Institut für Softwarewissenschaften Universität Wien

Institute for Software Science – University of Vienna

P.Brezany100

DTD-Instanz<lehrstuhl> <inhaber>Prof Dr. Dr. h.c. Wolfgang Wahlster</inhaber> <sekretariat>Doris Borchers</sekretariat> <projekt> <titel>READY</titel> <beschreibung>Ressourcenadaptives

Dialogsystem</beschreibung> <leiter>Dr. Anthony Jameson</leiter>

<homepage>http://w5.cs.uni-sb.de/~ready</homepage> <mitarbeiter>Bohnenberger, Thorsten</mitarbeiter> <mitarbeiter>Grossmann-Hutter, Barbara</mitarbeiter> <mitarbeiter>Heckmann, Dominik</mitarbeiter> <mitarbeiter>Wittig, Frank</mitarbeiter> </projekt></lehrstuhl>