22.04.2015 Aufrufe

eTutor XQuery und Datalog - Data & Knowledge Engineering

eTutor XQuery und Datalog - Data & Knowledge Engineering

eTutor XQuery und Datalog - Data & Knowledge Engineering

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

28 Kapitel 3. Lösungsansatz<br />

sortierenden XML-Elemente werden anhand von XPath-Ausdrucken definiert. Ein<br />

solcher Ausdruck wird auf das Ergebnis einer bestimmten Musterlösung, das wie<br />

beschrieben als XML-Dokument vorliegt, ausgewertet. Das Resultat sind je<br />

definiertem XPath-Ausdruck eine Anzahl von XML-Elementen. In Abbildung<br />

3.16 wird mit (a) <strong>und</strong> (b) noch einmal das eingangs beschriebene Beispiel<br />

dargestellt, das anhand der Datenbasis in Abbildung 3.10 ausgewertet wird. Wenn<br />

sich nun bei der Analyse der abgegebenen Lösung (c) herausstellt, das ein XML-<br />

Element im Auswertungsergebnis (d) an sich mit dem entsprechenden XML-<br />

Element der Musterlösung übereinstimmt, so wird im nächsten Schritt untersucht,<br />

ob dieses XML-Element auch richtig sortiert ist, bzw. ob diese Sortierung<br />

überhaupt vorgeschrieben ist. Dazu werden alle definierten XPath-Ausdrücke<br />

ausgewertet <strong>und</strong> überprüft, ob sich das aktuelle XML-Element darunter befindet.<br />

Im gezeigten Beispiel ist das XML-Element mit der Nummer p2 jedenfalls falsch<br />

sortiert. Ist nun der XPath-Ausdruck //person gegeben, so befindet sich dieses<br />

XML-Element unter den XML-Elementen, die durch die Auswertung dieses<br />

Ausdruckes geliefert werden, weshalb dieser Fehler tatsächlich bewertet wird.<br />

let $db := doc(' http://etutor.dke.unilinz.ac.at/XML?id=1')/db,<br />

$personen := $db/person<br />

return (<br />

for $p in $personen[startswith(name,'M')]<br />

order by $p/name<br />

return $p)<br />

(a)<br />

let $db := doc(' http://etutor.dke.unilinz.ac.at/XML?id=1')/db,<br />

$personen := $db/person<br />

return (<br />

for $p in $personen[startswith(name,'M')]<br />

order by $p/stand<br />

return $p)<br />

(c)<br />

<br />

Maria<br />

ledig<br />

<br />

<br />

Max<br />

verheiratet<br />

<br />

<br />

Michael<br />

ledig<br />

<br />

(b)<br />

<br />

Maria<br />

ledig<br />

<br />

<br />

Michael<br />

ledig<br />

<br />

<br />

Max<br />

verheiratet<br />

<br />

(d)<br />

Abbildung 3.16: Analyse der Sortierung von XML-Elementen

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!