Aufgabe 1 (XML): Gegeben ist das folgende XML-Dokument. (10 Punkte) <?xml version="1.0" encoding="utf-8"?> <Bestellungen xmlns:xsi=http://www.w3.org/2001/xmlschema-instance xml= www.aifb.de/bestellungen > <Bestellung> <Kunde Kundennr="9632"/> <Menge>1000</Menge> <Datum> <Bestelldatum>2005-10-01</Bestelldatum> <Lieferdatum>2005-10-20</Lieferdatum> </Datum> <Artikel ArtikelNr="58"/> </Bestellung> <Bestellung> <Kunde Kundennr="815"/> <Menge>800</Menge> <Datum> <Bestelldatum>2005-10-01</Bestelldatum> <Lieferdatum>2005-10-15</Lieferdatum> </Datum> <Artikel ArtikelNr="89"/> </Bestellung> <Bestellung> <Kunde Kundennr="9560"/> <Menge>3000</Menge> <Datum> <Bestelldatum>2005-10-02</Bestelldatum> <Lieferdatum>2005-10-21</Lieferdatum> </Datum> <Artikel ArtikelNr="58"/> </Bestellung> <Bestellung> <Kunde Kundennr="9632"/> <Menge>500</Menge> <Datum> <Bestelldatum>2005-10-02</Bestelldatum> <Lieferdatum>2005-10-16</Lieferdatum> </Datum> <Artikel ArtikelNr="89"/> </Bestellung> </Bestellungen> Vervollständigen Sie das folgende XML-Schema so genau, wie es mit dem gegebenen XML-Dokument möglich ist. Das XML-Dokument muss für das XML- Schema gültig sein. Verwenden Sie zur Lösung dieser Aufgabe nur die Datentypen xs:integer und xs:string 1
<?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" targetnamespace= www.aifb.de/bestellungen elementformdefault="qualified" attributeformdefault="unqualified"> <xs:element name="bestellungen"> </xs:element> 2
</xs:schema> Aufgabe 2: (3 4 3 Punkte) a) Ihr Unternehmen steht vor der Entscheidung, ein XML-Datenbank- Managementsystem einzuführen. Nennen Sie Anforderungen an Anwendungen aus dem E-Business-Bereich, die von relationalen Datenbank- Managementsystemen nur unzureichend erfüllt werden. b) Zeichnen Sie zu dem XML-Dokument aus Aufgabe 1 den XML-Baum und geben Sie die Dokumentordnung an. 3
4
c) Wozu wird ein Datenmodell für XML benötigt? 5
Aufgabe 3 (XPath): (10 Punkte) a) Nennen Sie drei signifikante Unterschiede zwischen XPath 1.0 und XPath 2.0. b) Geben Sie einen XPath-Ausdruck (XPath 2.0) für das in Aufgabe 1 angegebene XML-Dokument, der folgende Knotenmengen lokalisiert: b1) Bestimmen Sie Kunden, die einen Artikel mit einer Artikelnummer (ArtikelNr) größer 60 bestellt haben. Kunden mit einer kleineren Artikelnummer sollen als 0 ausgegeben werden. b2) Zu jeder ArtikelNr soll die bestellte Menge ausgegeben werden (Summierung nicht notwendig) 6
Aufgabe 4 (XSLT): (10 Punkte) Schreiben Sie ein XSL Stylesheet, das den Inhalt der Elemente Bestelldatum, Kunde, Menge, Artikel und Lieferdatum aus Aufgabe 1 ausliest und möglichst ähnlich dem folgenden Screenshot darstellt. <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl=http://www.w3.org/1999/xsl/transform> <xsl:template match="/"> <html> <head> <title>meine Bestellungen</title> </head> <body> </body> </html> </xsl:template> 7
</xsl:stylesheet> HTML-Tags: <a> <b> <body> <br> <caption> <h1> bis <h6> <head> <hr> <html> <p> <strong> <table> <tbody> <td> <tfoot> <th> <thead> <title> <tr> Link/Anker Fettschrift Body-Teil Zeilenumbruch Überschrift für Tabelle Überschriften, hierarchische Ordnung Kopf-Teil Horizontale Linie HTML-Bereich Absatz Hervorgehobener Text Tabelle Tabellenkörper Tabellenzelle Tabellenfuß Zeile im Tabellenkopf Tabellenkopf Seitentitel Tabellenzeile 8
Aufgabe 5 (XQuery): (10 Punkte) a) Wodurch unterscheidet sich in XQuery die Semantik der for- Klausel von der Semantik der let-klausel? b) Formulieren Sie die folgende XQuery-Anfrage (gegeben das Dokument aus Aufgabe 1): Überprüfen Sie, von welchen Artikeln im Durchschnitt eine Menge größer 1500 und von welchen eine durchschnittliche Menge von kleiner gleich 1500 bestellt wurde. Formulieren Sie die Anfrage so, dass von den Artikeln die jeweilige Artikelnummer und der Wahrheitswert ausgegeben werden. Das Ergebnis soll als wohlgeformtes XML-Dokument dargestellt werden. xquery version "1.0"; 9
Allgemeine Syntax von XQuery-Anfragen: FLWR-expr ::= for-expr let-expr for-expr ::= (for $var in expr (, $var in expr)*)+ (where expr)? return expr let-expr ::= (let $var := expr (, $var := expr)*)+ (where expr)? return expr Funktion: fn:avg(node-set) 10
Aufgabe 6 (XUpdate): (10 Punkte) Im Rahmen der XUpdate-Spezifikation wird auch die sogenannte ACID- Eigenschaften von Transaktionen gefordert. Erklären Sie die kurz die ACID-Eigenschaften von Transaktionen und begründen Sie, warum eine Übertragung der ACID-Eigenschaften von relationalen Datenbanksystemen auf XML-Datenbanksysteme problematisch sein kann. 11