Kapitel 6: SQL und XML



Ähnliche Dokumente
7. Übung - Datenbanken

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Klausur Interoperabilität

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Speicherung von XML in (objekt-)relationalen Datenbanken. Burkhard Schäfer

Informatik 12 Datenbanken SQL-Einführung

3. Das Relationale Datenmodell

Programmiersprachen und Übersetzer

4. BEZIEHUNGEN ZWISCHEN TABELLEN

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Gegeben ist das folgende XML-Dokument.

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

Professionelle Seminare im Bereich MS-Office

Software Engineering Klassendiagramme Assoziationen

Kapitel 2: Einstieg in SQL

Ein Ausflug zu ACCESS

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

Berechnungen in Access Teil I

Oracle: Abstrakte Datentypen:

Bedingungen über Werte Statische Integrität. CHECK-Klausel

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

-Inhalte an cobra übergeben

Schlüssel bei temporalen Daten im relationalen Modell

XSL Templates. Mit Templates arbeiten. XSL Templates

Mai Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

Objektrelationale Datenbanken

Hilfe zur Urlaubsplanung und Zeiterfassung

Datenmanagement in Android-Apps. 16. Mai 2013

Die Online-Bestandserhebung im LSB Niedersachsen

Anleitung zum GEPA EXCEL Import Tool

WS 2009/10. Diskrete Strukturen

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

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

Persönliches Adressbuch

Registrierung am Elterninformationssysytem: ClaXss Infoline

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

So gehts Schritt-für-Schritt-Anleitung

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

Aufgaben zu XPath und XQuery

AZK 1- Freistil. Der Dialog "Arbeitszeitkonten" Grundsätzliches zum Dialog "Arbeitszeitkonten"

Datenbanken: Relationales Datenbankmodell RDM

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

Sie sollen eine Datenbank für Befragungen mittels Online-Fragebögen zu unterschiedlichen Themen erstellen:

proles-login. Inhalt [Dokument: L / v1.0 vom ]

Rundung und Casting von Zahlen

Um das Versenden von Anhängen an s zu ermöglichen, wurde der Assistent für die Kommunikation leicht überarbeitet und wo nötig verbessert.

etutor Benutzerhandbuch XQuery Benutzerhandbuch Georg Nitsche

Kapitel 5: Der SQL-Standard

Hilfedatei der Oden$-Börse Stand Juni 2014

SQL: statische Integrität

Die Post hat eine Umfrage gemacht

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Präsentation zum Thema XML Datenaustausch und Integration

BEDIENUNGSANLEITUNG: EINREICH-TOOL

Datenstrukturen & Algorithmen

Grundbegriffe der Informatik

XML Schema vs. Relax NG

Second Steps in eport 2.0 So ordern Sie Credits und Berichte

DB2 Codepage Umstellung

Kapitel 4: Entwurf der Relationsschemata

Anleitung zur Bearbeitung von Prüferkommentaren in der Nachreichung

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Grundlagen von Python

Kapitel 8: Physischer Datenbankentwurf

Ohne Fehler geht es nicht Doch wie viele Fehler sind erlaubt?

Universalimport in luxdata

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Datenaustauschformate. Datenaustauschformate - FLV

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Lieferschein Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

Über das Menü Zusätze Importe Import aus Fink Stunderfassung Lohnartenumschlüsselung gelangen Sie zu folgendem Eingabebildschirm:

Klicken Sie auf Weiter und es erscheint folgender Dialog

Binäre Bäume Darstellung und Traversierung

Fachhochschule Deggendorf Platzziffer:...

SEMINAR Modifikation für die Nutzung des Community Builders

Anmerkungen zur Übergangsprüfung

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

Umzug der abfallwirtschaftlichen Nummern /Kündigung

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY.

Serienbrief mit Works 7.0

Benutzerhandbuch - Elterliche Kontrolle

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

Suchmaschinen. Universität Augsburg, Institut für Informatik SS 2014 Prof. Dr. W. Kießling 23. Mai 2014 Dr. M. Endres, F. Wenzel Lösungsblatt 6

IV. Datenbankmanagement

Ihr CMS für die eigene Facebook Page - 1

GLIEDERUNG UND BASISGLIEDERUNG. 2010/03/09 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!

Transkript:

6. SQL und XML Seite 1 Kapitel 6: SQL und XML Wie können die Inhalte einer Datenbank als XML-Dokumente exportiert werden (Publizieren von XML? Wie können die Inhalte eines XML-Dokumentes in eine Datenbank importiert werden (Speichern von XML in Datenbanken? Wie können Anfragen über XML-Dokumenten in SQL-Anfragen abgebildet werden?

6. SQL und XML 6.1. SQL/XML Seite 2 6.1 SQL/XML SQL/XML ist Teil des SQL:2003-Standards XML kann direkt als Zeichenkette vom Typ VARCHAR oder CLOB (CHARACTER LARGE OBJECT gespeichert werden. SQL/XML erweitert die zulässigen Datentypen in SQL um den vordefinierten Datentyp XML, so dass ganze XML-Dokumente, Elemente oder auch Mengen von Elementen als Werte vom Typ XML gespeichert, mittels spezieller Operatoren innerhalb SQL erzeugt werden können. Die Integration von XPath und XQuery in SQL wird prinzipiell möglich, ist aber noch nicht standardisiert.

6. SQL und XML 6.1. SQL/XML Seite 3 Datentyp XML XMLPARSE( wandelt ein als Zeichenkette gegebenes XML-Dokument in einen Wert vom Datentyp XML. XMLSERIALIZE( wandelt einen Wert vom Typ XML zu einer Zeichenkette. SQL/XML definiert eine Reihe von weiteren Funktionen, die, in einen SFW-Ausdruck von SQL integriert, das Publizieren von XML aus einer Datenbank erlauben.

6. SQL und XML 6.1. SQL/XML Seite 4 Relationen Land LCode LName HStadt Fläche D Germany Berlin 357 Provinz PName LCode Fläche Baden D 15 Berlin D 0,9 Stadt SName PName LCode Einwohner LGrad BGrad Berlin Berlin D 3472 13,2 52,45 Freiburg Baden D 198 7,51 47,59 Karlsruhe Baden D 277 8,24 49,03 Lage LCode Kontinent Prozent D Europe 100 Mitglied LCode Organisation Art D EU member

6. SQL und XML 6.1. SQL/XML Seite 5 SFW-Ausdruck mit SQL/XML-Funktionen (Teil 1 SELECT XMLELEMENT ( NAME Land, XMLATTRIBUTES (L.LCode AS LCode, XMLELEMENT (NAME LName, L.LName, ( SELECT XMLELEMENT ( NAME Provinz, XMLELEMENT (NAME PName, P.PName, XMLELEMENT (NAME Fläche, P.Fläche, XMLAGG ( XMLELEMENT ( NAME Stadt, XMLELEMENT (NAME SName, S.SName, XMLELEMENT (NAME Einwohner, S.Einwohner ORDER BY S.Einwohner DESC FROM Provinz P, Stadt S WHERE P.LCode = L.LCode and P.LCode = S.LCode and P.PName = S.PName GROUP BY P.PName, P.Fläche,

6. SQL und XML 6.1. SQL/XML Seite 6 SFW-Ausdruck mit SQL/XML-Funktionen (Teil 2 ( SELECT XMLELEMENT ( NAME Lage, XMLELEMENT (NAME Kontinent, La.Kontinent, XMLELEMENT (NAME Prozent, La.Prozent FROM Lage La WHERE La.LCode = L.LCode, ( SELECT XMLELEMENT ( NAME Mitglied, XMLATTRIBUTES ( M.Organisation AS Organisation, M.Art AS Art FROM Mitglied M WHERE M.LCode = L.LCode AS Mondial FROM Land L

6. SQL und XML 6.1. SQL/XML Seite 7 XMLELEMENT( XMLELEMENT( erzeugt Elemente. Das erste Argument von XMLELEMENT definiert den Namen des Elementes. Das zweite Argument ist optional und dient zur Definition der zugehörigen Attribute. Das dann folgende Argument definiert den Elementinhalt. Ein leeres Element: XMLELEMENT ( NAME Mitglied, XMLATTRIBUTES ( M.Organisation AS Organisation, M.Art AS Art Sind Attributnamen und Spaltennamen identisch, dann kann eine abgekürzte Schreibweise gewählt werden, hier XMLATTRIBUTES(M.Organisation, M.Art

6. SQL und XML 6.1. SQL/XML Seite 8 Beispiel SELECT XMLELEMENT ( NAME Lage, XMLELEMENT (NAME Kontinent, La.Kontinent, XMLELEMENT (NAME Prozent, La.Prozent FROM Lage La WHERE La.LCode = L.LCode

6. SQL und XML 6.1. SQL/XML Seite 9 XMLAGG( XMLAGG( erzeugt zu jeder mittels GROUP BY definierten Gruppe von Zeilen einer Tabelle eine Folge von Elementen. Beispiel SELECT XMLELEMENT ( NAME Provinz, XMLELEMENT (NAME PName, P.PName, XMLELEMENT (NAME Fläche, P.Fläche, XMLAGG ( XMLELEMENT ( NAME Stadt, XMLELEMENT (NAME SName, S.SName, XMLELEMENT (NAME Einwohner, S.Einwohner FROM Provinz P, Stadt S WHERE P.LCode = L.LCode and P.LCode = S.LCode and P.PName = S.PName GROUP BY P.PName, P.Fläche

6. SQL und XML 6.1. SQL/XML Seite 10 XMLCONCAT( XMLAGG erlaubt lediglich ein einziges Argument, das, jedoch mehrere Kindelemente haben kann. Mittels XMLCONCAT( kann eine Folge von Elementen mittels Konkatenation ihrer Inhalte erzeugt werden. Beispiel XMLAGG ( XMLCONCAT ( XMLELEMENT (NAME SName, S.SName, XMLELEMENT (NAME Einwohner, S.Einwohner

6. SQL und XML 6.1. SQL/XML Seite 11 XMLFOREST( Alternativ zu XMLCONCAT(: XMLAGG ( XMLFOREST ( S.SName AS SName, S.Einwohner AS Einwohner Die Elementnamen ergeben sich implizit aus den betreffenden Spaltenbezeichnern, oder explizit über die AS-Klausel. Abgekürzte Schreibweise: XMLFOREST(S.SName, S.Einwohner Die einzelnen Elemente haben keine Struktur und keine Attribute.

6. SQL und XML 6.1. SQL/XML Seite 12 Abbildungsregeln SQL/XML enthält Abbildungsregeln, um Tabellen generisch in XML-Dokumente zu transformieren, um SQL-Datentypen XML-Schema Datentypen zuzuordnen, deren Werte die in SQL zulässigen Werte möglichst exakt darstellen.

6. SQL und XML 6.1. SQL/XML Seite 13 Abbildungsregeln für Tabellen <Land> <row> <LName>France</LName> <LCode>F</LCode> <HStadt>Paris</HStadt> <Fläche>547</Fläche> </row> <row> <LName>Germany</LName> <LCode>D</LCode> <HStadt>Berlin</HStadt> <Fläche>357</Fläche> </row> </Land> <Land> <LName>France</LName> <LCode>F</LCode> <HStadt>Paris</HStadt> <Fläche>547</Fläche> </Land> <Land> <LName>Germany</LName> <LCode>D</LCode> <HStadt>Berlin</HStadt> <Fläche>357</Fläche> </Land> (a Es kann festgelegt werden, ob bei Vorliegen von Nullwerten in Spalten einer Tabelle im zugehörigen XML-Dokument die entsprechenden Elemente fehlen, oder durch das Attribut nil = "true" repräsentiert werden sollen. (b

6. SQL und XML 6.1. SQL/XML Seite 14 Abbildungsregeln für Datentypen Abbildungsregeln, um gegebenen Basis-SQL-Datentypen, wie CHARACTER, NUMERIC, DATE und konstruierten Datentypen, wie ROW, ARRAY, MULTISET, jeweils XML-Schema Datentypen zuzuordnen. Jedem Basis-SQL-Datentyp wird ein globaler XML-Schema Datentyp zugeordnet, wobei sich der Zusammenhang zwischen den einzelnen Typen über eine normierte Namensgebung ergibt. <simpletype name = "INTEGER"> <restriction base = "int"/> </simpletype> <simpletype name = "CHAR_50"> <restriction base = "string"> <length value = "50"/> </restriction> </simpletype>

6. SQL und XML 6.1. SQL/XML Seite 15 Annotationen Einige Unterscheidungen in SQL, wie beispielsweise CHARACTER VARYING versus CHARACTER LARGE OBJECT, haben keine Entsprechung in XML-Schema. <simpletype name = "CHAR_50"> <annotation> <appinfo> <sqltype kind = "PREDEFINED" name = "CHAR" length = "50" charactersetname = "LATIN1" collation = "DEUTSCH"/> </appinfo> </annotation> <restriction base = "string"> <length value = "50"/> </restriction> </simpletype>

6. SQL und XML 6.1. SQL/XML Seite 16 konstruierter Datentyp ROW <sequence> <element name = "LName" nillable = "true" minoccurs = "1" maxoccurs = "1" type = "VARCHAR\_50"> <element name = "LCode" minoccurs = "1" maxoccurs = "1" type = "CHAR\_5"> </sequence>

6. SQL und XML 6.1. SQL/XML Seite 17 XML-Datentyp zur Tabelle Land <complextype name = "RowType.Mondial.Land"> <sequence> <element name = "LName" nillable = "true" minoccurs = "1" maxoccurs = "1" type = "VARCHAR_50"> <element name = "LCode" minoccurs = "1" maxoccurs = "1" type = "CHAR_5"> </sequence> </complextype> <complextype name = "TableType.Mondial.Land"> <sequence> <element name = "row" type = "RowType.Mondial.Land minoccurs = "0" maxoccurs = "unbounded"/> </sequence> </complextype>

6. SQL und XML 6.2. Speichern von XML Seite 18 6.2 Speichern von XML strukturorientierte Speicherung: Jedem XML-Dokument wird ein (erweiterter XML-Baum zugeordnet; die resultierende Tabelle nennen wir XML-Kantentabelle. inhaltsorientierte Speicherung: In Abhängigkeit vom Typ des XML-Dokumentes ist ein möglichst gut geeignetes relationales Schema zu finden. Hierarchische Beziehungen im XML-Dokument sind geeignet durch Fremdschlüsselbeziehungen zu repräsentieren.

6. SQL und XML 6.2. Speichern von XML Seite 19 strukturorientierte Speicherung XML-Bäume sind geordnete Bäume. Ordnung durch Nummerierung der Knoten in Dokument-Ordnung, Alternativ Ordnung der Kindknoten eines Knotens. Die Speicherung eines XML-Dokumentes als XML-Baum ist geeignet wenn zu den Dokumenten keine Typ-Information bekannt ist, oder die Struktur der zu speichernden Dokumente stark variiert. Nachteile: Alle Typ-Informationen gehen verloren. Außerdem macht das Halten sämtlicher Informationen in einer Tabelle die Formulierung von Anfragen und ihre effiziente Auswertung problematisch: Auswertung des // -Operators eines XPath-Ausdrucks mittels SQL verlangt Rekursion im Allgemeinen.

6. SQL und XML 6.2. Speichern von XML Seite 20 Beispiel XML-Kantentabelle Knoten Vorgänger Ordnung Name Wert 0 null 1 Mondial 1 0 1 Land 2 1 @LCode D 3 1 1 LName 4 2 1 Germany 5 1 2 Provinz 6 5 1 PName 7 6 1 Baden 8 5 2 Fläche 9 8 1 15 10 5 3 Stadt 11 10 1 SName 12 11 1 Freiburg 13 10 2 Einwohner 14 13 1 198 15 5 4 Stadt 16 15 1 SName 17 16 1 Karlsruhe 18 15 2 Einwohner 19 18 1 277...

6. SQL und XML 6.2. Speichern von XML Seite 21 inhaltsorientierte Speicherung Inverses Problem zum Publizieren von XML aus einer Datenbank. Jedem Elementtyp, zu dem Kindelemente oder Attribute existieren, wird eine Tabelle zugeordnet. Allen skalaren Attributen und allen Kindelementen einfachen Typs, die nicht mehrfach auftreten können, wird jeweils eine Spalte zugeordnet. Lässt sich mit diesen Spalten kein geeigneter Primärschlüssel definieren, so wird eine zusätzliche Primärschlüsselspalte aufgenommen. Mehrwertigen Attributen und mehrfach auftretenden Kindelementen einfachen Typs, bzw. Kindelementen komplexen Typs, wird ebenfalls eine eigene Tabelle zugeordnet. Der Bezug zu dem jeweiligen Elter-Element wird durch Hinzunahme seines Primärschlüssels als Fremdschlüssel realisiert. Ein so erzeugtes Datenbankschema kann nur als ein Ausgangspunkt für einen umfassenderen Datenbankentwurf gelten.

6. SQL und XML 6.2. Speichern von XML Seite 22 Beispiel <Mondial> <Land LCode = "D"> <LName>Germany</LName> <Provinz> <PName>Baden</PName> <Flaeche>15</Fläche> <Stadt> <SName>Freiburg</SName> <Einwohner>198</Einwohner> </Stadt> <Stadt> <SName>Karlsruhe</SName> <Einwohner>277</Einwohner> </Stadt> </Provinz> <Provinz> <PName>Berlin</PName> <Flaeche>0,9</Fläche> <Stadt> <SName>Berlin</SName> <Einwohner>3472</Einwohner> </Stadt> </Provinz> <Lage> <Kontinent>Europe</Kontinent> <Prozent>100</Prozent> </Lage> <Mitglied Organisation = "EU" Art = "member"/> </Land> </Mondial>

6. SQL und XML 6.2. Speichern von XML Seite 23 Beispiel fortgesetzt Land LCode LName D Germany Provinz PName LCode Fläche Baden D 15 Berlin D 0,9 Stadt SName PName LCode Einwohner Berlin Berlin D 3472 Freiburg Baden D 198 Karlsruhe Baden D 277 Lage LCode Kontinent Prozent D Europe 100 Mitglied LCode Organisation Art D EU member

6. SQL und XML 6.3. XPath und SQL Seite 24 6.3 XPath und SQL Anfragen nach den Nachfolgern oder Vorgängern eines Knotens eines Baumes können in einem geschlossenen SQL-Ausdruck im Allgemeinen nur mittels Rekursion ausgedrückt werden. Anfragen dieser Art können mit einer festen Anzahl Verbundoperationen ausgewertet werden, wenn wir etwas mehr Informationen über die einzelnen Knoten vorsehen.

6. SQL und XML 6.3. XPath und SQL Seite 25 Vermeiden von Rekursion Den einzelnen Knoten eines XML-Baumes werden Intervalle so zugeordnet, dass direkte und indirekte Vorgänger und Nachfolgerbeziehungen durch Analyse der Intervalle ohne Rekursion entschieden werden können. Des Weiteren nutzen wir die Pattern-Matching-Möglichkeiten von SQL geschickt aus, so dass Lokationspfade, die keine Prädikate enthalten, ohne Verbundoperationen ausgewertet werden können.

6. SQL und XML 6.3. XPath und SQL Seite 26 benötigte Relationen Zur Repräsentation eines XML-Baumes führen wir unterschiedliche Tabellen ein. Für Element-, Attribut- und Textknoten werden jeweils eigene Tabellen verwendet. Zusätzlich werden alle über dem XML-Baum ausdrückbaren einfachen XPath-Ausdrücke, die ausgehend von der Wurzel ein Blatt lokalisieren, in einer eigenen weiteren Tabelle gespeichert. Ein einfacher XPath-Ausdruck ist eine Folge von Ausdrücken der Form #/EName und #/@Attr, wobei # ein für das spätere Pattern-Matching benötigtes Trennzeichen ist.

6. SQL und XML 6.3. XPath und SQL Seite 27 Beispiel Element Start End PId 0 480 1 9 470 2 25 46 4 47 233 5 56 75 6 76 94 7 95 158 8 102 124 9 125 150 10 159 223 8 166 189 9 190 215 10 234 356 5 243 263 6 264 283 7 284 346 8 291 311 9 312 338 10 357 420 11 363 391 12 392 413 13 421 462 14 Attribut PId Start End Wert 3 10 10 D 15 422 422 Europe 16 422 422 member Text Start End Wert PId 32 38 Germany 4 63 67 Baden 6 84 85 15 7 109 116 Freiburg 9 136 138 198 10 173 181 Karlsruhe 9 201 203 277 10 250 255 Berlin 6 272 274 0,9 7 298 303 Berlin 9 323 326 3472 10 374 379 Europe 12 401 403 100 13

6. SQL und XML 6.3. XPath und SQL Seite 28 Beispiel fortgesetzt PId Pfad PathExpr 1 #/Mondial 2 #/Mondial#/Land 3 #/Mondial#/Land#/@LCode 4 #/Mondial#/Land#/LName 5 #/Mondial#/Land#/Provinz 6 #/Mondial#/Land#/Provinz#/PName 7 #/Mondial#/Land#/Provinz#/Fläche 8 #/Mondial#/Land#/Provinz#/Stadt 9 #/Mondial#/Land#/Provinz#/Stadt#/SName 10 #/Mondial#/Land#/Provinz#/Stadt#/Einwohner 11 #/Mondial#/Land#/Lage 12 #/Mondial#/Land#/Lage#/Kontinent 13 #/Mondial#/Land#/Lage#/Prozent 14 #/Mondial#/Land#/Mitglied 15 #/Mondial#/Land#/Mitglied#/@Organisation 16 #/Mondial#/Land#/Mitglied#/@Art

6. SQL und XML 6.3. XPath und SQL Seite 29 Regionen Die Region eines Text- und Elementknotens ist ein Intervall der Form [a, b], wobei a die Start- und b die Endposition der zugehörigen Tags im Dokument ist. Die Region eines Attributknotens ist gegeben durch zwei identische Zahlen, die gleich der Startposition seines Elterelementes erhöht um 1 sind. Hat ein Element mehrere Attribute, so ist in dieser Weise keine Ordnung auf den Attributen impliziert. Um die Zuordnung der Element-, Attribut- und Textknoten in den Tabellen zu ihren Positionen im Dokument zu rekonstruieren, sind lediglich die relativen Verhältnisse der Werte zu Start von Bedeutung.

6. SQL und XML 6.3. XPath und SQL Seite 30 Beispiel /Mondial/Land/Provinz/Stadt: SELECT E.Start, E.End FROM Element E, Pfad P WHERE P.PathExp LIKE #/Mondial#/Land#/Provinz#/Stadt AND E.PId = P.PId /Mondial//Stadt:

6. SQL und XML 6.3. XPath und SQL Seite 31 Beispiel //Land[Lage/Kontinent = "Europe"]//Stadt/SName: SELECT E2.Start, E2.End FROM Pfad P1, Pfad P2, Pfad P3, Element E1, Element E2, Text T WHERE P1.PathExp LIKE #%/Land AND P2.PathExp LIKE #%/Land#/Lage#/Kontinent AND P3.PathExp LIKE #%/Land#%/Stadt#/SName AND E1.PID = P1.PID AND E2.PID = P3.PID AND T.PID = P2.PID AND E1.Start < T.Start AND E1.End > T.End AND E1.Start < E2.Start AND E1.End > E2.End AND T.Wert = Europe

6. SQL und XML 6.3. XPath und SQL Seite 32 Beispiel /Mondial//Provinz//SName: