Kapitel 5: Datenaustausch mit XML

Kapitel 5: Datenaustausch mit XML
5. Datenaustausch mit XML
Kapitel 5: Datenaustausch mit XML
I
I
I
I
I
Der E-Commerce beruht auf dem elektronischen Austausch von
Dokumenten.
Austauschformat ist XML.
Die auszutauschenden Dokumente basieren typischerweise auf den
Inhalten von Datenbanken.
Exportieren von Daten einer Datenbank in XML; Importieren von
XML in eine Datenbank.
Gesamtmodell eines gemeinsamen elektronischen Marktes in XML.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 1
5. Datenaustausch mit XML
5.1. XML
5.1 Extensible Markup Language (XML)
Elemente
I
I
I
XML ist eine Auszeichnungssprache (Markup Language).
<aTagname> ¨offnender Tag, </aTagname> schließender Tag.
¨
Offnender und sein schließender Tag, zusammen mit dem durch
beide umfassten Ausschnitt des Dokumentes, wird als Element
bezeichnet; der Elementname ist der Name des Tags und der durch
offnenden und schließenden Tag umfasste Teil des Dokumentes ist
¨
der Inhalt des Elementes.
Der Inhalt eines Elementes kann aus einer Zeichenkette (ohne Tags),
weiteren Elementen, oder einer Mischung von beiden bestehen:
I
I
I
1 Der
Text (Elementtext),1
Element Content (Elementinhalt),
Mixed Content (gemischter Inhalt).
Standard redet hier nur von Content.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 2
5. Datenaustausch mit XML
5.1. XML
XML-Dokument
<Mondial>
<Land LCode = "D">
<LName>Germany</LName>
<Provinz>
<PName>Baden</PName>
<Flaeche>15</Fl¨
ache>
<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¨
ache>
<Stadt>
<SName>Berlin</SName>
<Einwohner>3472</Einwohner>
</Stadt>
</Provinz>
<Lage>
<Kontinent>Europe</Kontinent>
<Prozent>100</Prozent>
</Lage>
<Mitglied Organisation = "EU" Art = "member"/>
</Land>
</Mondial>
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 3
5. Datenaustausch mit XML
5.1. XML
Element mit gemischtem Inhalt
<Stadt>
<SName>Freiburg i.Br.</SName>
Eine der sch¨
onsten St¨
adte Deutschlands.
<Einwohner>198</Einwohner>
Viele darunter sind ¨
okologisch orientiert.
</Stadt>
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 4
5. Datenaustausch mit XML
5.1. XML
Attribute
I
I
Attribute:
<aTagname attr1 = "val1 "...attrk = "valk ">, k ≥ 1.
leeres Element:
<aTagname attr1 = "val1 "...attrk = "valk "/>, k ≥ 0.
Beispiel:
<Mitglied Organisation = "EU" Art = "member"/>.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 5
5. Datenaustausch mit XML
5.1. XML
wohlgeformte Elementstruktur
Eine Elementstruktur ist wohlgeformt,
I wenn f¨
ur je zwei Elemente mit Namen EName1 , EName2 gilt:
wenn <EName1 > im Dokument vor <EName2 >, dann entweder auch
</EName1 > im Dokument vor <EName2 >, oder </EName2 > im
Dokument vor </EName1 >.
I Genau ein Element existiert, das in keinem anderen enthalten ist,
Dokumentelement. Es ist das Wurzelelement des Dokumentes.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 6
5. Datenaustausch mit XML
5.1. XML
XML-Baum
Die Struktur eines XML-Dokumentes kann durch einen Baum, genannt
XML-Baum, dargestellt werden.
I Jedem Element des Dokumentes und jedem Elementtext wird ein
Knoten zugeordnet.
I Das Dokumentelement ist die Wurzel des XML-Baumes.
I Ein Knoten p ist Elterknoten eines Knotens p 0 , wenn das zu p 0
geh¨
orende Element E 0 direkt in dem zu p geh¨
orenden Element E
enthalten ist, oder p 0 f¨
ur den Elementtext von p steht.
I Ist ein Knoten mit einem Elementtext beschriftet, so bezeichnen wir
ihn als Textknoten und seine Beschriftung als Textinhalt. Alle
anderen Knoten sind Elementknoten.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 7
5. Datenaustausch mit XML
5.1. XML
Seite 8
XML-Baum
Mondial
Land
LName
Provinz
PName
Fläche
Kontinent
Berlin
15
0,9
SName
Prozent
Stadt
Stadt
Germany
Mitglied
PName Fläche
Stadt
Baden
Lage
Provinz
100
SName
SName
Europe
Einwohner
Einwohner
Einwohner
Karlsruhe
Freiburg
Berlin
198
3472
277
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
5. Datenaustausch mit XML
5.1. XML
Dokumentordnung
I
I
I
Die Dokumentordnung ergibt sich aus der Reihenfolge der ¨offnenden
Tags.
Ein XML-Baum ist geordnet, wenn die Tiefensuche des Baumes
gerade die Dokumentordnung ergibt.
Zu einem geordneten XML-Baum kann immer eine textuelle
Darstellung, eine sogenannte Serialisierung, angeben werden, die der
urspr¨
unglichen Dokumentordnung entspricht.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 9
5. Datenaustausch mit XML
5.1. XML
Attribute
I
I
I
I
Ein Element darf zu jedem Attribut maximal einen Wert haben.
Die Attribute eines Elementes sind zueinander ungeordnet. Die
Dokumentordnung auf den entsprechenden Elementen ist f¨
ur die
Attribute untereinander ohne Bedeutung.
Attribute sind nicht Teil eines XML-Baumes. Aus Gr¨
unden der
Einheitlichkeit werden im Folgenden auch Attribute als Knoten eines
XML-Baumes betrachtet.
XML-Baum mit Attributknoten ist ein erweiterter XML-Baum.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 10
5. Datenaustausch mit XML
5.1. XML
Seite 11
erweiterter XML-Baum
0
Mondial
1
Land
2
LCode
D
3
LName
5
Provinz
6
PName
4
8
Fläche
7
9
Baden
15
Germany
15
10
Stadt
24
Berlin
0,9
25 Kontinent
Stadt
26
SName 28
18
Einwohner
Europe
Einwohner
17
14
198
27
Karlsruhe
19
Berlin
33
Prozent
34
32
16
SName
13
Einwohner
31
22
Stadt
11
12
35
Mitglied
21
23
PName Fläche
SName
Freiburg
30
Lage
20
Provinz
100
36
Organisation
37
EU
Art
member
29
3472
277
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
5. Datenaustausch mit XML
5.1. XML
XML ist mehr
Processing Instructions, Entity Declarations und Name Spaces betrachten
wir nicht.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 12
5. Datenaustausch mit XML
5.1. XML
XML-Prozessor
I
I
I
Den Zugang zu Inhalt und Struktur eines XML-Dokumentes
erm¨oglicht der XML-Prozessor.
Mit diesem Modul kann mindestens die Wohlgeformtheit eines
Dokumentes u
uft werden.
¨berpr¨
Es erm¨oglicht des Weiteren das Parsen des Dokumentes.
I
I
Baumorientierter (DOM-)Parser,
Ereignisorientierter (SAX-)Parser.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 13
5. Datenaustausch mit XML
5.2. Definition von Dokumenttypen (DTD)
5.2 Definition von Dokumenttypen (DTD)
Elementtypen und Attributtypen
I
I
I
I
I
Eine DTD legt die zul¨assige Struktur eines Dokumentes fest.
Es werden Elementtypen und Attributtypen definiert.
Ein Dokument, das konform zu seiner DTD ist, heißt g¨
ultig (valid).
XML verlangt zwingend, dass Dokumente wohlgeformt sind;
G¨
ultigkeit ist eine optionale Eigenschaft.
Die G¨
ultigkeit eines Dokumentes, relativ zu einer betrachteten DTD,
kann durch den XML-Prozessor u
uft werden.
¨berpr¨
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 14
5. Datenaustausch mit XML
5.2. Definition von Dokumenttypen (DTD)
Definition von Typen
I
I
I
I
Eine DTD ist formal eine Grammatik.
Definition von Elementtypen:
<!ELEMENT EName Content>,
Definition von Attributtypen
<!ATTLIST EName Attr1 AttrType1 Default1 ... Attrk
AttrTypek Defaultk >.
Elementtypen sind global innerhalb einer DTD. Attributdefinitionen
sind an ein Element gebunden und somit f¨
ur dieses lokal.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 15
5. Datenaustausch mit XML
5.2. Definition von Dokumenttypen (DTD)
Content
I
I
I
I
EMPTY: Elemente von diesem Typ haben keinen Inhalt.
ANY: Es sind beliebiger Elementtext oder beliebiger anderweitig in
der DTD definierter Elementinhalt erlaubt.
(#PCDATA): Elemente von diesem Typ haben als Inhalt Elementtext.
#PCDATA steht f¨
ur Parsed Character Data; die einen Elementtext
repr¨asentierende Zeichenkette wird nicht in Hochkommata
eingefasst.
Ein durch 0 (0 und 0 )0 umfasster regul¨arer Ausdruck u
¨ber
Elementtypen, der eine innere Struktur zu EName definiert, das
Inhaltsmodell. Existiert zu einem Element ein Inhaltsmodell, so hat
das Element Elementinhalt.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 16
5. Datenaustausch mit XML
5.2. Definition von Dokumenttypen (DTD)
Inhaltsmodell
I
Das Inhaltsmodell wird durch einen regul¨aren Ausdruck α definiert,
der gem¨aß der folgenden Regeln gebildet ist:
I
I
I
I
Jeder Elementtyp E ist ein Inhaltsmodell α.
Wenn α ein Inhaltsmodell ist, dann sind auch α∗, α+ und α?
Inhaltsmodelle.
Wenn α1 , α2 Inhaltsmodelle sind, dann sind auch (α1 | α2 ) und
(α1 , α2 ) Inhaltsmodelle.
Die Zeichen 0 |0 , 0 ,0 , 0 ∗0 , 0 +0 und 0 ?0 innerhalb eines Inhaltsmodells
stehen f¨
ur die zur Bildung des Elementinhaltes anwendbaren
Operatoren:
I
I
I
I
I
Auswahl zwischen α1 und α2 ,
Konkatenation (Sequenz) von α1 und α2 ,
beliebig h¨
aufige (einschließlich keinmal) Konkatenation von α mit
sich selbst,
beliebig h¨
aufige (ausschließlich keinmal) Konkatenation,
optionales Auftreten (h¨
ochstens einmal) von α.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 17
5. Datenaustausch mit XML
5.2. Definition von Dokumenttypen (DTD)
Beispiel
<!DOCTYPE Mondial[
<!ELEMENT Mondial (Land+)>
<!ELEMENT Land (LName?, Provinz*, Lage*, Mitglied*)>
<!ELEMENT LName (#PCDATA)>
<!ELEMENT Provinz (PName, Flaeche, Stadt*)>
<!ELEMENT PName (#PCDATA)>
<!ELEMENT Flaeche (#PCDATA)>
<!ELEMENT Stadt (SName, Einwohner)>
<!ELEMENT SName (#PCDATA)>
<!ELEMENT Einwohner (#PCDATA)>
<!ELEMENT Lage (Kontinent, Prozent)>
<!ELEMENT Kontinent (#PCDATA)>
<!ELEMENT Prozent (#PCDATA)>
<!ELEMENT Mitglied EMPTY>
<!ATTLIST Land LCode ID #REQUIRED>
<!ATTLIST Mitglied Organisation CDATA #REQUIRED Art CDATA "member">
]>
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 18
5. Datenaustausch mit XML
I
I
I
5.2. Definition von Dokumenttypen (DTD)
Die Definition einer DTD wird durch <!DOCTYPE aName[ und ]>
umfasst, wobei aName den Elementtyp des Wurzelelementes festlegt.
¨
Uberfl¨
ussige Klammerungen innerhalb eines Inhaltsmodells lassen wir
weg; anstatt ((α1 , α2 ), α3 ) schreiben wir beispielsweise (α1 , α2 , α3 ).
Die Regeln einer DTD k¨
onnen rekursiv sein. Damit k¨onnen
beispielsweise auch Zusammenh¨ange der Form einer Teilehierarchie
<!ELEMENT Teil (Teil*)> oder auch einer Baumstruktur
<!ELEMENT Baum (Baum+ | Blatt)> definiert werden.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 19
5. Datenaustausch mit XML
5.2. Definition von Dokumenttypen (DTD)
Attribute
I
I
Definition des Typs attrType des Attributes attr eines
Elementtyps EName
<!ATTLIST EName attr1 attrType1 default1 ... attrk
attrTypek defaultk >
attrType ist von einer der folgenden Formen:
I
I
I
I
I
CDATA: Die zul¨
assigen Werte des Attributs attr sind beliebige
Zeichenketten, die in Hochkommata eingeschlossen werden.
("val1 "| ...| "valn "): Die zul¨
assigen Werte sind aufgez¨
ahlt.
ID: Die Werte des Attributes sind u
¨ber dem ganzen Dokument
identifizierend. Die ID-Werte aller Vorkommen (beliebiger) Attribute
vom Typ ID sind eindeutig.
IDREF: Der Wert des Attributes ist der ID-Wert eines anderen
Attributes; er referenziert ein anderes Element innerhalb des
Dokumentes.
IDREFS: Der Wert des Attributes ist eine Folge von IDREF-, d.h.
ID-Werten.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 20
5. Datenaustausch mit XML
I
5.2. Definition von Dokumenttypen (DTD)
default ist von einer der folgenden Formen:
I
I
I
I
#REQUIRED: Das Attribut muss explizit aufgef¨
uhrt werden.
#IMPLIED: Das Attribut ist optional; es ist kein Default-Wert
vorgesehen.
val: Ist das Attribut im Dokument selbst nicht aufgef¨
uhrt, dann wird
durch den XML-Prozessor dieser Wert wie ein Standardwert
(Default-Wert) f¨
ur das betreffende Attribut angenommen.
#FIXED val: Das Attribut muss immer den angegebenen Wert
haben.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 21
5. Datenaustausch mit XML
5.2. Definition von Dokumenttypen (DTD)
Bemerkungen
I
I
I
I
I
Eine DTD bietet an Datentypen lediglich einen allgemeinen
Datentyp f¨
ur Zeichenketten an.
Datenbanken bieten einen reichhaltigen Vorrat an Basis-Datentypen
zur Repr¨asentation von Zahlen, Zeichenketten, oder auch zeitlichen
Zusammenh¨angen an.
Es kann nicht unterschieden werden, ob #PCDATA der Inhalt einer
beliebigen Zeichenkette, eine Zahl, oder ein Datum ist.
Entsprechendes gilt f¨
ur den Datentyp CDATA zur Darstellung von
Attributwerten.
Attributwerte k¨onnen vom Typ ID,IDREF oder auch IDREFS sein.
Der XML-Prozessor gew¨ahrleistet, dass ID-Werte im gesamten
Dokument eindeutig sind und dass unter den IDREF-Werten nur
solche sind, die als ID-Wert im Dokument auftauchen.
Es ist nicht ausdr¨
uckbar, welcher Elementtyp mittels IDREF
referenziert werden soll. Die Qualit¨at der Referenzierung ist somit
nicht vergleichbar zur referentiellen Integrit¨at in Datenbanken.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 22
5. Datenaustausch mit XML
5.3. XPath
5.3 XPath
I
I
I
I
I
XPath ist prim¨ar eine Sprache zum Addressieren (Lokalisieren) von
Teilen eines erweiterten XML-Baumes mittels Pfaden.
Zun¨achst Version 1.0 von XPath; sp¨ater Unterschiede zu Version 2.0.
Pfadausdr¨
ucke in XPath werden Lokationspfade genannt.
Ein Lokationspfad besteht aus einer Folge von Lokationsschritten.
Jeder Lokationsschritt enth¨alt eine Achse, einen Knotentest und ein
oder mehrere Pr¨adikate.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 23
5. Datenaustausch mit XML
5.3. XPath
Welche Knoten werden lokalisiert?
(1) /child::Mondial/child::Land
(2) /child::Mondial/child::Land[child::LName = "Germany"]
(3) /child::Mondial/child::Land[child::LName = "Germany"]/
child::Provinz
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 24
5. Datenaustausch mit XML
I
I
I
I
I
5.3. XPath
Ein Lokationspfad in XPath wird relativ zu einem Kontext
ausgewertet und liefert als Resultat eine Menge von Knoten.
Kontext: Kontextknoten; sp¨ater Kontextposition, Kontextgr¨oße.
Ein Lokationspfad heißt absolut, wenn ihm ’/’ vorangestellt ist und
anderenfalls relativ.
Der Kontextknoten eines absoluten Lokationspfades ist der
Wurzelknoten des XML-Dokumentes; der Kontextknoten eines
relativen Lokationspfades wird anderweitig gegeben.
Der Wurzelknoten des XML-Dokumentes repr¨asentiert Eigenschaften
des gesamten XML-Dokumentes und verweist auf das
Dokumentelement (Wurzelelement) des XML-Dokumentes, d.h. den
Wurzelknoten des betreffenden XML-Baumes.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 25
5. Datenaustausch mit XML
5.3. XPath
Lokationspfad
I
I
I
Ein Lokationspfad P besteht aus einer durch ’/’ getrennten Folge
von Lokationsschritten.
Eine solche Folge wird von links nach rechts induktiv ausgewertet.
Das Ergebnis der Auswertung ist die durch den Pfad P lokalisierte
Menge von Knoten KP des betrachteten XML-Baumes.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 26
5. Datenaustausch mit XML
5.3. XPath
Seite 27
Menge der lokalisierten Knoten
I
I
I
I
I
I
Sei n die Anzahl Schritte eines Lokationspfades, n ≥ 1.
Sei pi , 1 ≤ i ≤ n, ein Lokationsschritt.
Sei Li−1 die Menge der durch den Lokationsschritt pi−1 lokalisierten
Knoten; ist i = 1, dann gilt L0 = {r }, wobei r der Wurzelknoten.
Sei k ∈ Li−1 . Der Lokationsschritt pi lokalisiert in Abh¨angigkeit von
k eine Menge von Knoten Li (k).
Jeder Knoten k 0 ∈ Li (k) ist ein zu betrachtender Kontextknoten f¨
ur
den folgenden Lokationsschritt pi+1 .
Die Menge der zu betrachtenden Kontextknoten f¨
ur pi+1 ist somit
[
Li (k).
Li =
k∈Li−1
I
Ist pi ist der letzte Lokationsschritt eines Lokationspfades P, dann
gilt KP = Li .
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
5. Datenaustausch mit XML
5.3. XPath
Lokationsschritt
I
I
I
Ein Lokationsschritt besteht aus einer Achse, einem Knotentest und,
optional, aus einem oder mehreren Pr¨adikaten:
Achse::Knotentest[Pr¨adikat].
Achse und Knotentest legen die durch diesen Schritt lokalisierte
Menge von Knoten des XML-Baumes relativ zu dem betrachteten
Kontextknoten des Lokationsschrittes, zur Struktur des
XML-Baumes und zum Typ der Knoten fest.
Pr¨adikate wirken als ein zus¨atzlicher Filter.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 28
5. Datenaustausch mit XML
5.3. XPath
Achse
definierte Menge von Knoten
attribute
child
descendant
alle Attribute des Kontextknotens
alle direkten Nachfolger des Kontextknotens
alle direkten und indirekten Nachfolger des Kontextknotens
wie descendant, jedoch einschließlich Kontextknoten
der direkte Vorg¨
anger des Kontextknotens
alle Knoten, außer dem Kontextknoten, auf dem Pfad
vom Kontextknoten zur Wurzel
wie ancestor, jedoch einschließlich Kontextknoten
alle Knoten, die in der Dokumentordnung nach dem
Kontextknoten stehen, jedoch außer den durch
descendant definierten Knoten
alle Knoten, die denselben direkten Vorg¨
anger haben
wie der Kontextknoten und in der Dokumentordnung
nach dem Kontextknoten stehen
alle Knoten, die in der Dokumentordnung vor dem
Kontextknoten stehen, jedoch außer den durch
ancestor definierten Knoten
alle Knoten, die denselben direkten Vorg¨
anger haben
wie der Kontextknoten und in der Dokumentordnung
vor dem Kontextknoten stehen
Kontextknoten
descendant-or-self
parent
ancestor
ancestor-or-self
following
following-sibling
preceding
preceding-sibling
self
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 29
5. Datenaustausch mit XML
5.3. XPath
Achse und Knotentest
I
I
I
I
I
Die Achsen eines Lokationspfades legen fest, in welcher Weise der
XML-Baum durchlaufen werden soll.
Relativ zu den jeweiligen Kontextknoten der einzelnen Schritte des
Pfades wird die Menge der f¨
ur die Lokalisierung weiter zu
betrachtenden Knoten festgelegt.
Eine Achse ist eine Vorw¨artsachse, wenn ihre vom Kontextknoten
verschiedenen Knoten in der Dokumentordnung nach dem
Kontextknoten stehen;
sie ist eine R¨
uckw¨artsachse, wenn ihre vom Kontextknoten
verschiedenen Knoten vor dem Kontextknoten stehen.
Die Achse self ist gleichermaßen Vorw¨arts- und R¨
uckw¨artsachse.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 30
5. Datenaustausch mit XML
5.3. XPath
Lokalisation durch Achse und Knotentest
I
Knotentest eine Attribut oder Elementtyp:
I
I
I
I
I
Achse attribute: aus der Menge der Attributknoten der Achse wird
nur der Knoten des Attributs mit dem als Knotentest angegebenen
Namen weiter betrachtet.
Achse sonstig: die Knoten der Achse werden auf diejenigen
eingeschr¨
ankt, deren Elementtyp gerade gleich dem als Knotentest
gew¨
ahlten Elementtyp ist.
Knotentest ’∗’, dann ist jedes Attribut, bzw. jeder Elementtyp,
zul¨assig,
Knotentest text() schr¨ankt die Knoten auf alle Textknoten ein,
Knotentest node() bedeutet keine Einschr¨ankung.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 31
5. Datenaustausch mit XML
5.3. XPath
Seite 32
Welche Knoten werden lokalisiert?
(4) /descendant::Stadt
(5) /descendant::*[self::Stadt]
Lokalisiere die Knoten der St¨
adte in Baden.
(6) ................................................................
(7) ........................................................
Lokalisiere alle Attributknoten Organisation mit Wert "EU".
(8)
........................................................................
(9) /descendant::Stadt/descendant::text()
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
5. Datenaustausch mit XML
5.3. XPath
Kurzschreibweise
I
I
I
I
I
self::node(): ’.’,
parent::node(): ’..’,
attribute::: ’@’,
Angabe einer Achse fehlt: child-Achse,
Pfad enth¨alt ’//’: /descendant-or-self::node()/.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 33
5. Datenaustausch mit XML
5.3. XPath
zur Kurzschreibweise.
(10) //Stadt
(11) //*[self::Stadt]
(12) //Stadt[../PName = "Baden"]
(13) //Provinz[PName = "Baden"]/Stadt
(14) //@Organisation[. = "EU"]
(15) //Stadt//text()
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 34
5. Datenaustausch mit XML
5.3. XPath
Pr¨adikate
I
I
I
I
Pr¨adikate sind XPath-Ausdr¨
ucke, denen ein Wahrheitswert
zugeordnet werden kann.
Jedem Lokationspfad kann ein Wahrheitswert zugeordnet werden; er
hat den Wert true(), wenn er eine nicht-leere Menge von Knoten
lokalisiert und ansonsten den Wert false().
Wird ein Lokationspfad innerhalb eines Vergleichspr¨adikates
verwendet, dann wird jeder Knoten durch seinen String-Value
ersetzt; f¨
ur einen Elementknoten ergibt sich der String-Value aus der
Konkatenation aller Inhalte der Textknoten in Dokumentordnung,
die in dem durch ihn identifizierten Teilbaum liegen.
Pr¨adikate k¨onnen u
¨ber Konjunktionen und Disjunktionen von
XPath-Ausdr¨
ucken definiert werden.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 35
5. Datenaustausch mit XML
5.3. XPath
Welche Knoten werden lokalisiert?
(16) //Stadt[Einwohner > 500]
(17) //Stadt[Einwohner]
(18) //Stadt[../PName = //Stadt[SName = "Freiburg"]/../PName]
(19) //Provinz[Stadt/SName != "Freiburg"]
Lokalisiere alle Knoten der Provinzen, die keine Stadt mit
Namen "Freiburg"enthalten.
(20) .............................................
weitere Beispiele zu Pr¨
adikaten
I
//*[@Art | @LCode]
I
//*[@Art and @Organisation]
I
//*[@Art][@Organisation]
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 36
5. Datenaustausch mit XML
5.3. XPath
Kontextposition
I
I
I
I
Auswertung nicht nur relativ zu einem Kontextknoten, sondern auch
relativ zur Kontextposition und zur Kontextgr¨oße.
Grundlage f¨
ur Kontextgr¨
oße und Kontextposition ist die durch Achse
und Knotentest eines Lokationsschrittes bzgl. eines Kontextknotens
definierte Knotenmenge, auf die die Pr¨adikate angewendet werden
sollen. Die Z¨ahlung der Knoten beginnt dabei bei 1.
Die Kontextgr¨oße ist gegeben durch die M¨achtigkeit der
Knotenmenge.
Die Kontextposition durch die Position eines Knotens in dieser
Menge relativ zur Dokumentordnung. Ist die betrachtete Achse eine
R¨
uckw¨artsachse, dann wird die umgekehrte Dokumentordnung
betrachtet.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 37
5. Datenaustausch mit XML
5.3. XPath
Welche Knoten werden lokalisiert?
(21) //Stadt[position() = 2]
(22) //Land/Provinz[1]/Stadt[last()]
Lokalisiere den Knoten derjenigen Stadt, die im Dokument
direkt auf Freiburg folgt.
(23) ............................................................
(24) //Stadt[(preceding::Stadt)[1]/SName = "Freiburg"]/SName
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 38
5. Datenaustausch mit XML
5.3. XPath
XPath Version 1.0 und 2.0
I
I
I
I
I
XPath ist weniger geeignet als Anfragesprache; jeder lokalisierte
Knoten identifiziert einen Teilbaum des XML-Baumes, dieser
Teilbaum kann jedoch nicht in seiner Struktur ver¨andert werden.
Im Zusammenhang mit der Standardisierung von XQuery wurde mit
XPath Version 2.0 eine in einigen Punkten grundlegend ge¨anderte
und erweiterte Version von XPath entwickelt.
Das Konzept einer Knotenmenge (Node Set) wird in der Version 2.0
durch das allgemeinere Sprachkonzept einer Sequenz ersetzt.
In einigen F¨allen ergeben sich unterschiedliche Semantiken von
XPath Version 1.0 Ausdr¨
ucken, wenn sie nach der Version 2.0
interpretiert werden.
Dar¨
uber hinaus enth¨alt XPath Version 2.0 eine Reihe von
Sprachkonstrukten wie if...then...else, oder auch for, die
keine Entsprechung in Version 1.0 haben.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 39
5. Datenaustausch mit XML
5.4. XML-Schema
5.4 XML-Schema
I
I
I
I
XML-Schema beh¨alt die prinzipielle M¨achtigkeit einer DTD zur
Definition von Inhaltsmodellen bei und erg¨anzt diese um eine
reichhaltige M¨oglichkeit, Datentypen zu definieren.
Es werden Typdefinitionen zur Verwendung in XML-Dokumenten
bereitgestellt, gegen die die Dokumente dann validiert werden
k¨onnen.
Schemata gem¨aß XML-Schema sind selbst XML-Dokumente.
Wir beschr¨anken uns auf vor einem Datenbankhintergrund
wesentliche Zusammenh¨ange.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 40
5. Datenaustausch mit XML
5.4. XML-Schema
Elementtypen
I
I
XML-Schema beruht auf einem erweiterbaren Typkonzept.
Eine Anzahl von Datentypen ist vordefiniert, sogenannte Built-in
Types.
I
I
I
primitive,
abgeleitete.
Basierend auf den primitiven Datentypen k¨
onnen neue Typen
definiert werden.
I
I
einfache, d.h. Typen ohne Attribute und Kindelemente,
komplexe, d.h. Typen mit Attributen und Kindelementen.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 41
5. Datenaustausch mit XML
5.4. XML-Schema
Seite 42
XML-Schema Datentypen
anyType
All complex types
duration
anySimpleType
dateTime
boolean
time
date
hexBinary
base64Binary
gYearMonth
float
string
gYear
gMonthDay
double
anyURI
gDay
QName
gMonth
NOTATION
decimal
normalizedString
integer
token
nonPositiveInteger
language
Name
NMTOKEN
negativeInteger
long
nonNegativeInteger
int
unsignedLong
NCName
NMTOKENS
positiveInteger
short
unsignedInt
byte
ID
IDREF
ENTITY
IDREFS
ENTITIES
unsignedShort
unsignedByte
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
5. Datenaustausch mit XML
5.4. XML-Schema
einfache Datentypen
I
I
I
I
I
Wertebereich, Repr¨asentationsraum und Aspekte.
Der Repr¨asentationsraum eines Datentyps sieht zu jedem Wert des
Wertebereichs mindestens eine lexikalische Darstellung (Literal) vor.
Mehr Literale als Werte: beipielsweise Zeittypen oder
Gleitkommazahlen (100 oder 10E1).
Wertebereich und Repr¨asentationsraum k¨
onnen durch Aspekte
mittels eines regul¨aren Ausdrucks eingeschr¨ankt werden:
Unter-/Obergrenzen der Werte, L¨angenbeschr¨ankungen und
Aufz¨ahlungen der erlaubten Werte.
Einfache Typen k¨onnen aus einfachen Typen mittels Listenbildung
(list) und Vereinigung (union) erzeugt werden.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 43
5. Datenaustausch mit XML
5.4. XML-Schema
Beispiele f¨
ur einfache Datentypen
<simpleType name = "Prozent">
<restriction base = "number">
<fractionDigits value = "2"/>
<minInclusive value = "0.00"/>
<maxInclusive value = "100.00"/>
</restriction>
</simpleType>
<simpleType name = "Autonummer">
<restriction base = "string">
<pattern value = "[A-Z]+[0-9]+"/>
</restriction>
</simpleType>
<simpleType name = "LandCode">
<restriction base = "NMTOKEN">
<enumeration value = "D"/>
<enumeration value = "A"/>
<enumeration value = "CH"/>
</restriction>
</simpleType>
<simpleType name = "AlleAutonummern">
<list itemType = "Autonummer"/>
</simpleType>
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 44
5. Datenaustausch mit XML
5.4. XML-Schema
Attribute
I
I
Attribute d¨
urfen lediglich einfache Typen besitzen.
Ein Attribute attr eines Elementtyps kann mittels der Attribute
use, default und fixed weiter charakterisiert werden.
I
I
use kann die Werte optional,prohibited und required
annehmen.
Wird use nicht definiert, so wird optional angenommen.
Die Verwendung von default und fixed ist alternativ.
Beispiel
<attribute name = "LCode" type = "string"
use = "required" default = "Atlantis"/>
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 45
5. Datenaustausch mit XML
5.4. XML-Schema
komplexe Elementtypen
I
I
I
I
Erweiterung eines einfachen Typs, oder durch Definition eines
Inhaltsmodells aus einfachen und komplexen Typen.
Inhaltsmodelle werden mittels Reihung (sequence), Auswahl
(choice) und Konjunktion (all) definiert; Kardinalit¨aten werden
durch minOccurs und maxOccurs ausgedr¨
uckt.
Bei Verwendung von all d¨
urfen alle angegebenen Typen maximal
einmal in beliebiger Reihenfolge auftreten.
Mittels minOccurs = "0", kann ein Element als optional f¨
ur ein
Inhaltsmodell definiert werden.
Mittels nillable = "true" und innerhalb eines Dokumentes nil
= "true" wird ein Nullwert explizit ausgedr¨
uckt.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 46
5. Datenaustausch mit XML
5.4. XML-Schema
globale Elemente und Typen
I
I
I
I
Typdefinitionen und Elementdeklarationen auf der obersten Ebene
eines XML-Schema Dokumentes sind global.
Globale Elementdeklarationen k¨
onnen mittels ref referenziert
werden.
Globale Typdefinitionen haben einen Namen und k¨onnen zur
Deklaration von Elementen verwendet werden.
Typdefinitionenohne einen Namen sind anonym.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 47
5. Datenaustausch mit XML
5.4. XML-Schema
Beispiel
<complexType name = "Einwohner">
<simpleContent>
<extension base = "positiveInteger">
<attribute name = "Jahr" type = "gYear"
use = "required"/>
</extension>
</simpleContent>
</complexType>
<complexType name = "Land">
<sequence>
<element name = "LName" type = "string" nillable = "true"/>
<element name = "Einwohner" type = "Einwohner"/>
<element ref = "Provinz" minOccurs = "0" maxOccurs = "unbounded"/>
<element ref = "Lage" minOccurs = "0" maxOccurs = "unbounded"/>
<element ref = "Mitglied" minOccurs = "0" maxOccurs = "unbounded"/>
</sequence>
<attribute name = "LCode">
<simpleType>
<restriction base = "NMTOKEN">
<enumeration value = "D"/>
<enumeration value = "A"/>
<enumeration value = "CH"/>
</restriction
</simpleType>
</attribute>
</complexType>
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 48
5. Datenaustausch mit XML
5.4. XML-Schema
Eindeutigkeitsbedingungen
I
I
I
Eindeutigkeit kann f¨
ur Element- und Attributinhalte, oder auch f¨
ur
Kombinationen hiervon, verlangt werden.
Die unique-Klausel verlangt Eindeutigkeit f¨
ur vorhandene Werte.
Bei Anwendung der key-Klausel muss ein Wert vorhanden und
eindeutig sein.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 49
5. Datenaustausch mit XML
I
Eindeutigkeit bezieht sich relativ auf das direkt u
¨bergeordnete
Element (Kontext), in dem die Bedingung definiert ist.
I
I
I
I
I
5.4. XML-Schema
Mittels selector wird die zu betrachtende Knotenmenge des
Dokumentes relativ zum Kontext festgelegt.
Mittels field wird die Kombination der konkreten Werte relativ zum
Selektor festgelegt.
Mittels field lokalisierte Elemente m¨
ussen einen einfachen Typ
besitzen.
selector und field werden durch eingeschr¨ankte
XPath-Ausdr¨
ucke – im Wesentlichen d¨
urfen nur Vorw¨artsachsen
verwendet werden, es sind keine Pr¨adikate zul¨assig und als
Knotentest sind node() und text() nicht erlaubt – festgelegt.
Eine Eindeutigkeitsbedingung ist erf¨
ullt, wenn die Werte der durch
field lokalisierten Knoten bzgl. der Menge der durch selector
lokalisierten Knoten eindeutig sind.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 50
5. Datenaustausch mit XML
5.4. XML-Schema
Beispiel
<element name = "Provinz">
<complexType>
<sequence>
<element name = "PName" type = "string"/>
<element name = "Fl¨
ache" type = "float"/>
<element name = "Stadt"
minOccurs = "0" maxOccurs = "Unbounded"/>
</sequence>
</complexType>
</element>
<element name = "Land" type = "Land"/>
<element name = "Mondial">
<complexType>
<sequence>
<element ref = "Land"
minOccurs = "0" maxOccurs = "Unbounded"/>
</sequence>
</complexType>
<key name = "PrimaryKeyForLand">
<selector xpath = "Land"/>
<field xpath = "@LCode"/>
</key>
<key name = "PrimaryKeyForProvinz">
<selector xpath = "Land/Provinz"/>
<field xpath = "PName"/>
</key>
</element>
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 51
5. Datenaustausch mit XML
5.4. XML-Schema
Fremdschl¨usselbedingungen
I
I
I
I
I
Referenzbeziehung werden mittels der keyref-Klausel definiert.
Mit refer wird der Bezug zu einem eindeutigen Kriterium,
typischerweise ein Schl¨
ussel, festgelegt.
Mittels selector und field wird der Fremdschl¨
ussel festgelegt.
Der Kontext der Fremdschl¨
usseldefinition muss hierbei den Kontext
der betreffenden Schl¨
usseldefinition enthalten.
XML-Schema erlaubt auch den ID/IDREF-Mechanismus einer DTD.
ID,IDREF und IDREFS sind zul¨assige einfache vordefinierte Typen
und haben dieselbe Semantik wie bei Verwendung einer DTD.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 52
5. Datenaustausch mit XML
5.4. XML-Schema
Beispiel
<element name = "Land"><complexType><sequence>
<element name = "LName" type = "string" nillable = "true"/>
<element name = "Einwohner" type = "Einwohner"/>
<element ref = "Lage" minOccurs = "0" maxOccurs = "Unbounded"/>
<element ref = "Mitglied" minOccurs = "0" maxOccurs = "Unbounded"/>
</sequence>
<attribute name = "LCode" type = "string"/>
</complexType></element>
<element name = "Provinz"><complexType><sequence>
<element name = "PName" type = "string"/>
<element name = "Stadt" minOccurs = "0" maxOccurs = "Unbounded"/>
</sequence>
<attribute name = "LCode" type = "string"/>
</complexType></element>
<element name = "Mondial"><complexType><sequence>
<element ref = "Land" minOccurs = "0" maxOccurs = "Unbounded"/>
<element ref = "Provinz" minOccurs = "0" maxOccurs = "Unbounded"/>
</sequence></complexType>
<key name = "PrimaryKeyForLand">
<selector xpath = "Land"/><field xpath = "@LCode"/></key>
<key name = "PrimaryKeyForProvinz">
<selector xpath = "Provinz"/>
<field xpath = "PName"/><field xpath = "@LCode"/></key>
<keyref name = "ForeignKeyForLand" refer = "PrimaryKeyForLand">
<selector xpath = "Provinz"/><field xpath = "@LCode"/></keyref>
</element>
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 53
5. Datenaustausch mit XML
5.4. XML-Schema
Bemerkungen
I
I
Innerhalb XML-Schema k¨
onnen keine allgemeinen
Integrit¨atsbedingungen formuliert werden.
Schl¨
ussel- und Fremdschl¨
usselbedingungen gehen u
¨ber den
ID/IDREF-Mechanismus weit hinaus, haben jedoch nur innerhalb
eines Dokumentes eine Bedeutung.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 54
5. Datenaustausch mit XML
5.5. XQuery
5.5 XQuery
Die Ziele von XML Query, kurz XQuery, sind pr¨agnant beschrieben auf
der Homepage des XQuery-Projektes:2
The mission of the XML Query project is to provide flexible query
facilities to extract data from real and virtual documents on the World
Wide Web, therefore finally providing the needed interaction between the
Web world and the database world. Ultimately, collections of XML files
will be accessed like databases.
2 http://www.w3.org/XML/Query
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 55
5. Datenaustausch mit XML
5.5. XQuery
Allgemeines
I
I
I
I
I
XQuery ist, vergleichbar zur Relationenalgebra, eine funktionale
Sprache.
Eine Anfrage in XQuery wird deklarativ als Ausdruck definiert, der
von einem XQuery-System zu einem Wert, der Antwort, ausgewertet
werden kann.
XQuery ist dar¨
uber hinaus eine streng getypte Sprache, so dass
¨
Typfehler bereits zur Ubersetzungszeit
erkannt werden k¨onnen.
Der Wert eines XQuery-Ausdrucks ist eine Sequenz von keinem oder
mehreren sogenannten Items.
Ein Item ist entweder ein atomarer Wert, d.h. ein Wert von einem
einfachen Typ gem¨aß XML-Schema, oder ein Knoten (Element-,
Attribut- und Textknoten).
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 56
5. Datenaustausch mit XML
5.5. XQuery
Kreieren von Elementknoten
I
Der Ausdruck
<Stadt PLZ = "79100">
{"Freiburg i.Br."}
</Stadt>
I
erzeugt ein Element Stadt und weist ihm das Attribut PLZ mit Wert
79100 und den Elementtext "Freiburg" zu.
Verwendung von Konstruktoren element und attribute:
element Stadt {attribute PLZ {"79100"}, "Freiburg i.Br."}
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 57
5. Datenaustausch mit XML
5.5. XQuery
XPath 2.0
I
I
I
Anfragen in Form von XQuery-Ausdr¨
ucken beziehen sich
typischerweise auf XML-B¨aume und extrahieren und kombinieren
durch Knoten identifizierte Teilb¨aume.
Zur Lokalisierung von Knoten eines gegebenen XML-Baumes
verwendet XQuery XPath 2.0.
Beispiel f¨
ur Unterschiede zu XPath 1.0:
Der Ausdruck aName = true() ist gem¨aß XPath 1.0 wahr, sofern
aName eine nicht-leere Knotenmenge lokalisiert. Derselbe Ausdruck
ist gem¨aß XPath 2.0 nur dann wahr, wenn die durch aName
lokaliserte Menge mindestens ein Element enth¨alt, das den
Wahrheitswert true besitzt.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 58
5. Datenaustausch mit XML
5.5. XQuery
Beispiel
<St¨
adte>
{ doc("Mondial.xml")//Stadt }
</St¨
adte>
Der Ausdruck doc("Mondial.xml") lokalisiert hierbei den Wurzelknoten
des XML-Dokumentes.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 59
5. Datenaustausch mit XML
5.5. XQuery
FLWOR-Ausdruck
I
I
I
I
I
I
Ein FLWOR-Ausdruck besteht im Allgemeinen aus einer for-, let-,
where-, order- und return-Klausel.
Mittels einer for-Klausel werden eine oder mehrere Variablen an
Ausdr¨
ucke gebunden und erzeugen so einen Strom von Tupeln.
Durch eine let-Klausel werden eine oder mehrere Variable jeweils an
das gesamte Resultat eines Ausdrucks gebunden.
Die where-Klausel dient zu Filterung der erzeugten Tupel.
Mittels der order by-Klausel kann eine erw¨
unschte Sortierung der
Tupel erreicht werden.
Mittels der return-Klausel wird das Resultat des gesamten
Ausdrucks definiert.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 60
5. Datenaustausch mit XML
5.5. XQuery
Beispiel
for $a in (1,2,3),
$b in ("a", "b", "c"),
$c in (10, 20, 30)
return
<Z>{$a, $b, $c}</Z>
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 61
5. Datenaustausch mit XML
5.5. XQuery
Beispiel
<St¨
adte>
{
for $a in
doc("Mondial.xml")//Provinz[PName = "Baden"]/Stadt/SName
return
<Stadt> { $a } </Stadt>
}
</St¨
adte>
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 62
5. Datenaustausch mit XML
5.5. XQuery
Beispiel
<St¨
adte>
{
let $a := doc("Mondial.xml")//Land[@LCode = "D"]
for $b in $a//Provinz[PName = "Baden"]/Stadt/SName
return
<Stadt> { $b, element Land {$a/LName/text()} } </Stadt>
}
</St¨
adte>
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 63
5. Datenaustausch mit XML
5.5. XQuery
Beispiel
for $a in doc("Mondial.xml")//Provinz/Stadt
order by $a/SName descending
return
<Stadt>
{ $a/SName }
<Provinz>
{
for $b in doc("Mondial.xml")//Provinz
where $b/Stadt = $a
return $b/PName
}
</Provinz>
</Stadt>
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 64
5. Datenaustausch mit XML
5.5. XQuery
Beispiel
for $a in doc("Mondial.xml")//Provinz/Stadt,
$b in doc("Mondial.xml")//Provinz/Stadt
where $a/../PName < $b/../PName
return
<Paar ProvinzA = "{ $a/../PName }"
ProvinzB = "{ $b/../PName }">
{ $a/SName/text(), ", ", $b/SName/text() }
</Paar>
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 65
5. Datenaustausch mit XML
5.5. XQuery
Quantoren some, every und bedingte Ausdr¨ucke
for $a in doc("Mondial.xml")//Provinz
where some $b in $a//Stadt
satisfies ($b/Einwohner > 1000)
return $a/PName
for $a in doc("Mondial.xml")//Provinz
return
if (count($a/Stadt) > 1)
then
<HauptProvinz>
{ $a/PName }
</HauptProvinz>
else ()
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 66
5. Datenaustausch mit XML
5.5. XQuery
Positionen einer Sequenz
for $a at $i in doc("Mondial.xml")//SName
return <Stadt Nummer = "{$i}">{$a}</Stadt>
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 67
5. Datenaustausch mit XML
5.5. XQuery
Speichern von Zwischenresultaten
let $a :=
for $b in
return
<Stadt>
let $c :=
for $d in
return
<Stadt>
return ($c,
doc("Mondial.xml")//Provinz[PName = "Baden"]/Stadt
{ $b/SName } </Stadt>
doc("Mondial.xml")//Provinz[PName = "Berlin"]/Stadt
{ $d/SName } </Stadt>
$a)
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 68
5. Datenaustausch mit XML
5.5. XQuery
benutzerdefinierte Funktionen
Die Deklaration einer Funktion besteht aus einem Funktionskopf, der aus
dem Funktionsbezeichner, der Liste der Parameter und der Angabe des
R¨
uckgabeparameters besteht, gefolgt von einem XQuery-Ausdruck, dem
Funktionsrumpf.
declare function StadtmitNummer($a,$i)
as item()*
{
let $b := ($a//SName)[$i]
return
(
<Stadt Nummer = "{ $i }"> { $b } </Stadt>,
if ($i < count($a//Stadt))
then StadtmitNummer($a, $i+1) else ()
)
};
for $c in doc("Mondial.xml")/Mondial/Land return
($c/LName, StadtmitNummer($c,1))
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 69
5. Datenaustausch mit XML
5.5. XQuery
Sequenzen
I
I
I
I
Werte sind Sequenzen von Items.
Der Ausdruck (1,"eins") hat den Wert 1 eins.
Der Ausdruck
(1, "eins", doc("Mondial.xml")//Land/@LCode)
hat den Wert 1 eins LCode = "D".
Ist eine Sequenz durch einen Ausdruck definiert, der selbst einen
Ausdruck enth¨alt, der eine Sequenz definiert, so wird die innere
Sequenz aufgel¨ost (flattened). Der Ausdruck
(1,
for $i in doc("Mondial.xml")//Provinz
return $i/Stadt/SName/text(),
2)
hat den Wert 1 Freiburg Karlsruhe Berlin 2.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 70
5. Datenaustausch mit XML
5.5. XQuery
Funktion data()
Mittels data() wird einer Sequenz eine Sequenz atomarer Werte
zugeordnet.
I
Attributknoten und Textknoten werden durch ihren zugeordneten
atomaren Wert repr¨asentiert.
data((1, "eins", doc("Mondial.xml")//Land/@LCode))
I
Einem Elementknoten wird als Wert die Konkatenation aller in ihm
enthaltenen Textknoten in Dokumentordnung zugeordnet.
data((1, "eins",
doc("Mondial.xml")/(//Provinz/Stadt)[last()]))
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 71
5. Datenaustausch mit XML
5.5. XQuery
Funktion distinct-values()
Eine Sequenz kann Duplikate enthalten. Der Ausdruck (1,2,1) definiert
beispielsweise die Sequenz 1 2 1.
Die Funktion distinct-values() eliminiert Duplikate aus Sequenzen.
I
I
distinct-values((1,2,1))
mit Duplikaten:
data(doc("Mondial.xml")//Provinz
[PName = "Berlin"]//node()[text()])
I
ohne Duplikate:
distinct-values(doc("Mondial.xml")//Provinz
[PName = "Berlin"]//node()[text()])
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 72
5. Datenaustausch mit XML
5.5. XQuery
Standardfunktionen
XQuery bietet weit u
¨ber 100 Standardfunktionen an, die in einem
separaten Standardisierungsdokument definiert werden. Darunter
I
I
I
I
Aggregierungs-Funktionen, wie avg(), max() und count(),
Funktionen f¨
ur spezielle XML-Schema Datentypen wie date,
Funktionen zur Typkonversion oder auch zum Pattern-Matching,
Funktionen f¨
ur spezielle XML-Konstrukte wie ID, IDREF und
Namensr¨aume.
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 73
5. Datenaustausch mit XML
5.5. XQuery
Beispiel
<Mondial>
{
for $a in doc("Mondial1.xml")//Land
return
<Land>
{
$a/LName,
for $b in $a/Provinz
let $b1 := $b/PName,
$b2 := $b/Fl¨
ache,
$b3 := $b/Stadt
return
element Provinz {attribute Einwohner {sum($b//Einwohner)},
($b1, $b2, $b3)}
}
</Land>
}
</Mondial>
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 74
5. Datenaustausch mit XML
5.5. XQuery
Operatoren
Zus¨atzlich zu den u
¨blichen arithmetischen Operatoren, wie +,-,*,div
und mod, besitzt XQuery unterschiedliche Typen von
Vergleichsoperatoren.
I
I
Die Wertevergleichsoperatoren eq,ne,lt,le,gt,ge erlauben den
Vergleich zweier atomarer Werte.
Die Operatoren f¨
ur allgemeinen Vergleich =,!=,<,<=,>,>= erlauben
den Vergleich zweier Sequenzen atomarer Werte.
Die Semantik ist hierbei so festgelegt, dass der Vergleichsausdruck
dann true() liefert, wenn irgendein Wert der einen Sequenz mit
irgendeinem Wert der anderen Sequenz in der gew¨
unschten Relation
steht.
Damit gilt (1,2)=(2,3) und (2,3)=(3,4), aber nicht der
transitive Zusammenhang (1,2)=(3,4).
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 75
5. Datenaustausch mit XML
5.5. XQuery
weitere Operatoren
I
Der Vergleich zweier Knoten ist bzgl. is und is not m¨oglich, wobei
is gleiche Knotenidentit¨at meint.
doc("Mondial.xml")/(//Stadt)[last()] is
doc("Mondial.xml")//Provinz[last()]/Stadt[last()]
I
Die Operatoren <<,>> erlauben einen Vergleich zweier Knoten bzgl.
der Dokumentordnung.
doc("Mondial.xml")//Provinz[PName = "Baden"] <<
doc("Mondial.xml")//Provinz[PName = "Berlin"]
I
Operatoren union,intersect,except liefern angewandt auf zwei
Sequenzen eine Resultat-Sequenz ohne Duplikatknoten in
Dokumentordnung.
(doc("MondialTest3.xml")//Stadt)[1] union
doc("MondialTest3.xml")//Provinz[PName="Baden"]/Stadt[1]
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 76
5. Datenaustausch mit XML
5.5. XQuery
Gleichheit von Sequenzen: fn:deep-equal()
Zwei Sequenzen sind gleich, wenn sie
I dieselbe Anzahl Eintr¨
age besitzen,
I Eintr¨
age an derselben Position in einer f¨
ur ihren Typ definierten
Weise gleich sind,
I diese Gleichheit bei Eintr¨
agen eines komplexen Typs rekursiv f¨
ur die
Kindknoten gilt.
Beispiel
fn:deep-equal(
(doc("MondialTest3.xml")//Stadt)[last()],
doc("MondialTest3.xml")//Provinz[PName="Baden"]/Stadt[1] )
Folien zum Buch Datenbanken: Grundlagen und XML-Technologien, Elsevier Spektrum Akademischer Verlag, 2005
Seite 77
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement