XML Standardisierungen und Abfragesprachen Oberseminar Datenbanken - Christian Wilke 98I
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
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
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
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
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
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
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 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
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
Oberseminar Datenbanken - Christian Wilke 98I XPath - Baumstruktur R Wurzel C Kommentar E Element A Attribut T Text Oberseminar Datenbanken - Christian Wilke 98I
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
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
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