Einführung in die XML-Technologien XPath, XSLT und XQuery/XQuery

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>XQuery</language>
Autoren
* Fred Teske([mailto:s3frtesk@stud.hs-zigr.de s3frtesk@stud.hs-zigr.de  ])
* Philipp Dvorak ([mailto:s3phdvor@stud.hs-zigr.de s3phdvor@stud.hs-zigr.de])



=Einstieg in XQuery=

XQuery ist ein Abfragesprache für XML. Welche vom W3C entwickelt wurde. In diesem Kurs sollen die grundlegenden Spracheigenschaften vorgestellt werden und ein Verständnis der Syntax und Struktur von XQuery – Ausdrücken vermittelt werden.





XQuery ermöglicht:

* das Auswählen von Elementen und Attributen
* das Zusammenführen mehrerer XML-Dokumente
* das Bearbeiten von XML-Daten
* das Hinzufügen von Elementen und Attributen zu der Ergebnismengen
* Berechnungen auf Grundlage von XML-Daten
* Sortierungen der Ergebnismenge


Folgendes XML-Dokument soll als Basis für Beispiele und Erläuterungen dienen.

<popup name = "Beispieldokument">
<code id="4ef327a06604d">
<filmliste>

<film genre="Science-Fiction">
    <titel>Die Rueckkehr der Jedi-Ritter</titel>
    <hauptrollen>
       <schauspieler>Harrison Ford</schauspieler>
       <schauspieler>Mark Hamill</schauspieler>
    </hauptrollen>
    <oscars>1</oscars>
    <regie>
        <regisseur>Richard</regisseur>
    </regie>
    <jahr>1983</jahr>
</film>
    
<film genre="Thriller">
    <titel>Sin City</titel>
    <hauptrollen>
        <schauspieler>Jessica Alba</schauspieler>
        <schauspieler>Rosario Dawson</schauspieler>
        <schauspieler>Elijah Wood</schauspieler>
        <schauspieler>Bruce Willis</schauspieler>
    </hauptrollen>
        <oscars>0</oscars>
        <regie>
           <regisseur>Frank Miller</regisseur>
           <regisseur>Robert Rodriguez</regisseur>
           <regisseur>Quentin Tarantino</regisseur>
        </regie>
    <jahr>2005</jahr>   
</film>
    
<film genre="Drama">
        <titel>Forrest Gump</titel>
        <hauptrollen>
            <schauspieler>Tom Hanks</schauspieler>
        </hauptrollen>
        <oscars>6</oscars>
        <regie>
            <regisseur>Robert Zemeckis</regisseur>
        </regie>
        <jahr>1994</jahr>
</film>
    
<film genre="Action">
        <titel>The Dark Knight</titel>
        <hauptrollen>
            <schauspieler>Christian Bale</schauspieler>
            <schauspieler>Heath Ledger</schauspieler>
            <schauspieler>Aaron Eckhart</schauspieler>
        </hauptrollen>
        <oscars>2</oscars>
        <regie>
            <regisseur>Christopher Nolan</regisseur>
        </regie>
        <jahr>2008</jahr>
</film>
    
<film genre="Science-Fiction">
        <titel>Avatar</titel>
        <hauptrollen>
            <schauspieler>Sam Worthington</schauspieler>
            <schauspieler>Zoe Saldana</schauspieler>
        </hauptrollen>
        <oscars>3</oscars>
        <regie>
            <regisseur>James Cameron</regisseur>
        </regie>
        <jahr>2009</jahr>
</film>

</filmliste>

</code>
</popup>




==FLWOR - Ausdrücke==

FLWOR - Ausdrücke bilden die Grundlage für Anfragen an XML - Dokumente. Sie weisen Ähnlichkeiten mit Abfragen im SQL - Syntax auf. FLWOR ist ein Kunstwort (aus dem englischen "Flower"). Die einzelnen Buchstaben entsprechen dabei den Anfangsbuchstaben der Klauseln des Ausdrucks: for, let, where, order und return.


Ein einfacher FLWOR - Ausdruck ist zum Beispiel folgendes:


<run id="4ef330571dd87">
for $v in //filmliste/film
return $v/titel
</run>

Dieser Ausdruck würde alle Filmtitel aus dem Beispiel XML-Dokument "filmliste" zurückgeben.

Mit einer zusätzlichen where Klausel kann die Ergebnismenge weiter eingegrenzt werden.


<run id="4ef330571ddf5">
for $v in //filmliste/film
where $v/jahr = 2009
return $v/titel
</run>


Die gleiche Abfrage könnte auch mit Hilfe eines XPath - Ausdrucks ausgeführt werden


<code id="4ef335e8bd28b">/filmliste/film[jahr=2009]/titel</code>


Der XPath - Ausdruck liefert genau die selbe Ergebnismenge wie der XQuery - Ausdruck. Es gilt jeder gültige XPath - Ausdruck ist auch in XQuery zulässig. Jedoch sind FLOWR - Ausdrücke in XQuery weitaus leistungsfähiger wenn es darum geht mit Hilfe von JOINS Abfragen über mehrere XML-Dokumente auszuführen.