Aufgaben zu XPath und XQuery

Werbung
Aufgaben zu XPath und XQuery
 Dr. Arno Schmidhauser
Letzte Revision: März 2005
Email: [email protected]
Webseite: http://www.sws.bfh.ch/db
Inhalt
1
2
3
4
XPath .......................................................................................
XQuery.....................................................................................
XPath/SQL Umsetzung................................................................
Lokale Installation des XQuery-Servlets ........................................
2
2
3
5
Aufgabensammlung zu XPath und XQuery
1
2
XPath
Eine Webapplikation (XQuery-Servlet) für diese Aufgaben steht
gebrauchsfertig unter http://swsdb.hta-be.bfh.ch/XQuery.html zur Verfügung. Alle folgenden Aufgaben beziehen sich auf die XML-Datei
catalog-extended.xml, welche sich auch im Input-Fenster des Browsers
befindet.
1.
Suchen Sie die Menge aller title-Elemente, unabhängig davon, ob
sie zu einem Buch oder einem einzelnen Band eines Buches gehören, welche das Wort 'Java' enthalten ( contains()-Funktion verwenden)
2.
Suchen Sie alle Buchtitel vom Autor Elliotte Rusty Harold.
3.
Suchen Sie den Titel vom ersten Band (volume) aller Bücher, die
Bände haben.
4.
Suchen Sie alle book-Elemente, die ein keyword-Element mit dem
Wert 'XPath' haben.
5.
Suchen Sie die Titel aller Bücher, die von Steven Holzner oder Lisa
Rein geschrieben wurden.
6.
Suchen Sie die Titel aller Bücher, die von Elliotte Rusty Harold und
W. Scott Means geschrieben wurden.
7.
Suchen Sie alle Buchtitel, die mehr als 2 Bände haben.
8.
Suchen Sie das Buch, dessen zweiter Band den Titel 'Use cases'
trägt.
2
XQuery
Eine Webapplikation (XQuery-Servlet) für diese Aufgaben steht
gebrauchsfertig unter http://swsdb.hta-be.bfh.ch/XQuery.html zur Verfügung. Alle folgenden Aufgaben beziehen sich auf die XML-Datei
catalog-extended.xml, welche sich auch im Input-Fenster des Browsers
befindet.
9.
Erstellen Sie eine Abfrage welche alle Bücher mit Titel und ISBNNummer, sortiert nach Titel, ausgibt.
10.
Ändern Sie die Abfrage so, dass eine HTML-Tabelle ausgegeben
wird.
März 2005
Arno Schmidhauser
SWS
Aufgabensammlung zu XPath und XQuery
3
11.
Suchen Sie alle Bücher, deren Titel mit 'XML' beginnt. Verwenden
Sie einen regulären Ausdruck zum Suchen.
12.
Join: Erstellen Sie eine Abfrage, welche alle Reservationen für Bücher als HTML-Tabelle ausgibt. Die Buchdaten sind wie unter Aufgabe 10 verfügbar, die Reservationsdaten unter
doc( 'http://localhost/reservations.xml' ).
Es sollen Buchtitel, ISBN-Nummer, Priorität, Reservationsdatum und
Email der Person aufgeführt werden. Sortierung nach Priorität.
13.
Gruppierung: Erstellen Sie eine Abfrage welche die durchschnittliche
Anzahl Seiten pro Buch für jeden Author ausgibt. Autoren mit nur
einem Buch sollen weggelassen werden. Sortierung nach Anzahl Seiten, kleinste Anzahl zuerst.
14.
Outer Join: Erweitern Sie die Abfrage so, dass jedes Buch angezeigt
wird, auch wenn keine Reservation besteht. Für Bücher ohne Reservation soll also nur Buchtitel und ISBN-Nummer angezeigt werden.
Tipp 1: Zuerst ohne HTML-Ausgabe arbeiten. Tipp 2: Innerhalb der
return-Klausel einen eingeschachteltn FLWOR Ausdruck verwenden.
Sortierung nach Buchtitel.
15.
Suchen Sie Anwendungsbeispiele zu XQuery, beispielsweise unter
http://www.devx.com/xml/Article/15618/
Kurzfassung, Kommentar?
3
XPath/SQL Umsetzung
Eine Webapplikation (XDB-Servlet) für diese Aufgaben steht gebrauchsfertig unter http://swsdb.hta-be.bfh.ch/XDB.html zur Verfügung.
16.
Orientieren Sie sich über die Begriffe XML-sensitiver Volltextindex,
Dietzsches Nummerierungschema und XASR. Welche Ziele verfolgen
diese Ansätze?
Gegeben sei folgende Tabelle zur Aufnahme von XML-Dokumenten1:
create table Node (
idNode
numeric(10,0)
idParentNode
numeric(10,0)
nodeType
varchar(32)
nodeName
varchar(64)
nodeValue
varchar(512)
beginSeqNr
numeric(10,0)
endSeqNr
numeric(10,0)
not null,
null,
not null,
not null,
null,
not null,
null,
1
Theoretische Erläuterung dazu finden Sie im Buch "XML & Datenbanken", M.Klettke und
H. Meyer, dpunkt Verlag, 2003, Kapitel 9.4.1 bis 9.4.3. Diese Tabelle ist eine Kombination eine XML-sensitiven Volltext-Index und einer XASR.
März 2005
Arno Schmidhauser
SWS
Aufgabensammlung zu XPath und XQuery
4
primary key( idNode ),
foreign key( idParentNode )
references Node( idNode ) on delete cascade,
check ( nodeType in (
'attribute', 'element',
'end-element', 'document', 'text',
'comment', 'processing-instruction' ) )
);
Die Beispieldaten sind diesselben wie für Kapitel 1 und 2.
17.
Mit welcher Abfrage erhalten Sie den gesamten Inhalt der NodeTabelle (das originale Dokument) in XML-Form zurück?
18.
Mit welcher Abfrage erhalten Sie den gesamten, textuellen Inhalt
(ohne Elemente, Kommentare, Processing-Instruction) aus der Node-Tabelle zurück? Das Resultat dieser Abfrage wird bei XPath und
XQuery als Atomisierung bezeichnet und recht häufig bei der Resultatausgabe verwendet.
19.
Erstellen Sie eine SQL-Abfrage für alle 'title'-Elemente (ohne den
Text-Inhalt).
20.
Erstellen Sie eine SQL-Abfrage für alle 'title'-Elemente (inklusive
Text-Inhalt), entsprechend der XPath-Abfrage //title
21.
Erstellen Sie eine SQL-Abfrage, welche dem XPath-Ausdruck
//title[ .= 'Learning XML' ] entspricht.
22.
Erstellen Sie eine SQL-Abfrage, die gleichbedeutend zu folgender
XPath-Abfrage ist: /catalog/book/title.
23.
Setzen Sie folgende SQL-Abfrage in eine gleichbedeutende XPathAbfrage um:
select n4.nodeType nt, n4.nodeName nn, n4.nodeValue nv
from Node n0, Node n1, Node n2, Node n3, Node n4
where n3.beginSeqNr <= n4.beginSeqNr
and
n3.endSeqNr >= n4.endSeqNr
and n3.nodeName = 'title' and n3.nodeType = 'element'
and n3.idParentNode = n2.idNode
and n2.nodeName = 'book' and n2.nodeType = 'element'
and n2.idNode in ( select idParentNode
from Node
where nodeType = 'element'
and nodeName = 'author'
and idNode in ( select idParentNode
from Node
where nodeType = 'text'
and nodeName = '#text'
März 2005
Arno Schmidhauser
SWS
Aufgabensammlung zu XPath und XQuery
5
and nodeValue = 'Steven
Holzner' ) )
and n2.idParentNode = n1.idNode
and n1.nodeName = 'catalog' and n1.nodeType = 'element'
and n1.idParentNode = n0.idNode
and n0.nodeName = '#document' and n0.nodeType = 'document'
order by n4.beginSeqNr
4
Lokale Installation des XQuery-Servlets
Für den lokalen Gebrauch des XQuery-Servlets gehen Sie wie folgt vor:
Laden und entpacken Sie das Zip-File von der Datenbank-Homepage
www.sws.bfh.ch/db/WORKSHOPS/xml-db-workshop.zip
Im Verzeichnis XQuery-Servlet finden Sie die Installation. In der Datei setenv.bat müssen Sie den Pfad für die Variablen APP_HOME und JAVA_HOME
für ihre Umgebung anpassen. Java JDK 1.5 ist in der Umgebung der
SWS-Installation wahrscheinlich unter \\Rznt\XPApps\jdk1.5.0 zu finden.
Starten Sie anschliessend im Lösungsverzeichnis das Batch-File startWebServer.bat. Danach können Sie einen Browser mit dem URL
http://localhost/XQuery.html öffnen.
März 2005
Arno Schmidhauser
SWS
Herunterladen