oberseminar datenbanken - christian wilke 98i xml standardisierungen und abfragesprachen
TRANSCRIPT
Oberseminar Datenbanken - Christian Wilke 98I
XMLStandardisierungen 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) "coupe" name CDATA #REQUIRED color CDATA #IMPLIED>
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 interpretiertTeile 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 WurzelC KommentarE ElementA AttributT 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 Unteranfragenbuch/kapitel[bild]liefert alle Kapitel aus dem Buch, die ein Bild enthalten
• Methoden erleichtern aussagekräftige Anfragenbuch/kapitel[index() = 0]buch/kapitel/absatz/zeile[text()=”abc”]liefern das erste Kapitel des Buches bzw. die Zeile(n) mit dem Inhalt abc.