XML Standardisierungen und Abfragesprachen

Download Report

Transcript XML Standardisierungen und Abfragesprachen

XML
Standardisierungen und
Abfragesprachen
Oberseminar Datenbanken - Christian Wilke 98I
Inhalt
• Standardisierungen
Dokumenttyp-Definition (DTD)
XML Schema
XML Schema - eigene Datentypen
• Abfragesprachen
XPath
XQL
Oberseminar Datenbanken - Christian Wilke 98I
Dokumenttyp-Definition (DTD)
• definiert Elemente, Attribute und Entities
- Reihenfolge
- Anzahl
- Werte
- Datentypen
• XML Dokument ist gültig wenn es zu seiner DTD
konform ist
• Dokumente müssen keine DTD besitzen
Oberseminar Datenbanken - Christian Wilke 98I
DTD - Beispiel
<!DOCTYPE label[
<!ELEMENT label (name, street, city, state,
country, code)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT street (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT country (#PCDATA)>
<!ELEMENT code? (#PCDATA)>
]>
Oberseminar Datenbanken - Christian Wilke 98I
DTD - Einsatz
<!DOCTYPE label SYSTEM label.dtd">
...
<label>
<name>Max Mustermann</name>
<street>Musterstraße 17</street>
<city>Musterstadt</city>
<country>Musterland</country>
<code>0815</code>
</label>
Oberseminar Datenbanken - Christian Wilke 98I
DTD - Beispiel (2)
<!ELEMENT car (#PCDATA)>
<!ATTLIST car
type (coupe|limousine|cabrio|kombi)
name
CDATA
#REQUIRED
color
CDATA
#IMPLIED
>
"coupe"
Oberseminar Datenbanken - Christian Wilke 98I
XML Schema
• weitere Möglichkeit, Elemente und Attribute bzw.
Voraussetzungen für deren Auftreten zu definieren
• liegt als wohlgeformtes XML-Dokument vor
• Attribute werden als Kindknoten der Elemente
dargestellt
• Einbindung in XML-Dokument:
<gedicht xmlns=” gedicht.xsd”...>
Oberseminar Datenbanken - Christian Wilke 98I
XML Schema - Beispiel
<schema name=”gedicht.xsd”>
<elementType name=”gedicht”>
<sequence minOccur=”1”>
<elemntTypeRef name=”titel”/>
<elemntTypeRef name=”vers” minOccur=”1”
maxOccur=”*”/>
</sequence>
<attrDecl name=”autor” required=”false”>
<dataTypeRef name=”string”/>
</attrDecl>
</elementType>
...
</schema>
Oberseminar Datenbanken - Christian Wilke 98I
XML Schema (2)
• Elementtypen mit lokalem Gültigkeitsbereich
• Elemente erweitern
• Import von Teilen eines Schemas bzw. ganzen
Schemen
• Export von Teilen eines Schemas bzw. ganzen
Schemen
• benutzerdefinierte Datentypen
Oberseminar Datenbanken - Christian Wilke 98I
XML Schema - Datentypen
• XML Schema
– erkennt welche Attribute welche Datentypen
verlangen
– überprüft, ob Daten Einschränkungen des
Datentyps entsprechen (30. Februar...)
– ermöglicht Definition neuer Datentypen
Oberseminar Datenbanken - Christian Wilke 98I
XML Schema
eigene Datentypen
• vorhandene Datentypen:
ID, IDREF, IDREFS, ENTITY, ENTITIES,
NMTOKEN, NMTOKENS, NOTATION, CDATA
string, boolean, number, dateTime,
binary, uri, integer, decimal, real,
date, time, timePeriod
• benutzerdefinierte Datentypen bauen darauf auf
Oberseminar Datenbanken - Christian Wilke 98I
XML Schema
eigene Datentypen
<datatyp name=”wochentag”>
<basetyp name=”string”/>
<enumeration>
<literal>Montag</literal>
<literal>Dienstag</literal>
...
<literal>Samstag</literal>
<literal>Sonntag</literal>
</enumeration>
</datatyp>
Oberseminar Datenbanken - Christian Wilke 98I
XML Schema
eigene Datentypen
<attrDecl name=”tag”
required=”false”>
<datatypeRef name=”wochentag”/>
</attrDecl>
Oberseminar Datenbanken - Christian Wilke 98I
XML Path Language - XPath
• dient zum Auffinden von Informationen in
XML-Dokumenten
• XSL und XPointer bauen auf XPath auf
<xsl:apply-templates
select=”id(‚smith‘)/info[@type=‘public‘]”>
• XML-Dokument wird als Baum interpretiert
Teile des Dokuments (Elemente, Attribute...)
entsprechen Knoten des Baums, Wurzel ist das
Dokument selbst
Oberseminar Datenbanken - Christian Wilke 98I
XPath - Beispiel
<?xml version=”1.0”?>
<!--Vorbemerkung-->
<Wurzel>
<!--Parent-Element-->
<Parent Name=”Elternknoten”>
<Child Name=”Kindknoten”>Kind 1</Child>
<Child Name=”Kindknoten”>Kind 2</Child>
</Parent>
</Wurzel>
Oberseminar Datenbanken - Christian Wilke 98I
XPath - Baumstruktur
R
C
E
A
T
Wurzel
Kommentar
Element
Attribut
Text
Oberseminar Datenbanken - Christian Wilke 98I
XPath - Knotentypen
• sieben Typen von Knoten:
- Wurzelkonten (nicht das Wurzelelement)
- Elementknoten
- Textknoten (Inhalt der Elemente)
- Attributknoten (gelten nicht als Kinder des
Elementknotens)
- Namensraumknoten
- Kommentarknoten
- Verarbeitungsanweisungsknoten
(z.B. <?cursor blinking?>).
Oberseminar Datenbanken - Christian Wilke 98I
XPath
Auffinden einzelner Elemente
• erfolgt durch sogenannten Adresspfad
• einfachster Adresspfad / wählt Wurzelknoten aus
• relativ dazu werden untergeordnete Knoten
ausgewählt, z.B. /Wurzel/Parent
• mittels Prädikaten können Elemente mit bestimmten
Attributwerten ermittelt werden
/Wurzel/Parent/Child[@Name=”Kindknoten”][2]
Oberseminar Datenbanken - Christian Wilke 98I
XPath - Achsen
• Achsen sind Kriterien zum Auffinden von
Informationen
- child-Achse (Kind)
ermittelt direkt untergeordnete Elemente
- descendent-Achse (Nachfahre)
ermittelt untergeordnete Elemente
- parent-Achse(Eltern)
ermittelt direkt übergeordnete Elemente
- ancestor-Achse (Vorfahre)
ermittelt übergeordnete Elemente
- self-Achse (Eigen-Achse)
ermittelt Elemente in Bezug auf aktuellen Knoten
- attribute-Achse (Attribut)
ermittelt Attribute von Elementen
Oberseminar Datenbanken - Christian Wilke 98I
XML Query Language - XQL
• entwickelt, bevor sich XPath durchsetzen konnte
• Datenmodell und Syntax sind ähnlich
• auch XQL filtert Teilmengen von Informationen aus
XML-Dokumenten
• XQL interpretiert Dokument ebenfalls als Baum (mit
Dokumentelement als Wurzelknoten)
• verschiedene Filter:
Kind, Nachfahre, Attribut, Inhalt (Gleichheit,
Ungleichheit...)
Oberseminar Datenbanken - Christian Wilke 98I
XQL (2)
• Unteranfragen - Anfragen auf Ergebnisse von
Unteranfragen
buch/kapitel[bild]
liefert alle Kapitel aus dem Buch, die ein Bild
enthalten
• Methoden erleichtern aussagekräftige Anfragen
buch/kapitel[index() = 0]
buch/kapitel/absatz/zeile[text()=”abc”]
liefern das erste Kapitel des Buches bzw. die Zeile(n)
mit dem Inhalt abc.
Oberseminar Datenbanken - Christian Wilke 98I