Julia: XQuery Funktionsweise

Hallo Forum,

ich habe eine allgemeine Frage zu XQuery, und zwar, wie Funktioniert das Ganze?

Soweit ich verstanden habe, hat man eine XML-Datei als Eingabedokument und dieses wird syntaktisch analysiert und am Ende kriegt man XQuery-Datenmodell raus (was wenn ich es richtig verstanden habe, eine Sequenz ist).

Kennt sich vielleicht jemand mit dem Thema aus? Habe ich die Funktionsweise grob richtig beschrieben oder wie funktioniert XQuery? Welche Knoten des Eingabedokuments werden von XQuery besucht?

Schönen Dank im Voraus!

Julia

  1. Hallo Julia,

    Kennt sich vielleicht jemand mit dem Thema aus? Habe ich die Funktionsweise grob richtig beschrieben oder wie funktioniert XQuery? Welche Knoten des Eingabedokuments werden von XQuery besucht?

    XQuery ist eine Alternative zu XSLT, vor allem im Kontext von XML-Datenbanken. Prozessieren kann man es ähnlich wie XSLT, also mit einem Prozessor wie Saxon. Abfragen kann man beliebige Knoten.

    test.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
      <child attr="123">Text</child>  
    </root>
    
    

    test.xquery

    xquery version "3.1";
    <out>
    {
      let $elem := doc("test.xml")/root/child[@attr = '123']
      return $elem/text()
    }
    </out>
    
    

    Ergebnis:

    <out>Text</out>
    

    Zum Einlesen bietet sich u. a. Wikibooks an.

    Grüße,
    Thomas

    1. Hallo Thomas,

      vielen Dank für Deine Antwort!

      Ich möchte mich, ehrlich gesagt, gar nicht so sehr in XQuery einlesen, sondern ich muss in paar Tagen Klausur in einem Fach schreiben, das u.a. XML-Technologien beinhaltet. Und da muss ich auf bestimmte Fragen antworten können.

      In der Vorlesung / Übung haben wir das Thema so gut wie gar nicht behandelt, aber es ist wohl trotzdem klausurrelevant.

      Hier sind die Fragen und meine Antworten dazu. Könntest Du vielleicht darüberschauen und sagen, ob die Antworten korrekt / vollständig sind bzw. was ich ergänzen soll? Ich wäre Dir dafür sehr sehr dankbar!

      1. Welche Knoten des Eingabedokuments besucht XQuery?

      Alle, weil das ganze Dokument muss untersucht werden.

      2. Welche Datentypen gibt es in XQuery?

      Wert von XQuery ist eine Sequenz von 0,1 oder mehreren Items. Ein Item kann entweder atomarer Wert (z.B. string, integer usw.) oder ein Knoten (Elementknoten, Kommentarknoten usw.) sein.

      3. Auf welche Dokumente kann XQuery zugreifen?

      XML

      4. Wie kann XQuery Elemente in das Ausgabedokument einfügen?

      Durch explizites Einfügen von Start- und Endtags

      5. Ist XQuery berechnungsuniversell (Turing-vollständig)?

      Ja

      6. Semantik von XQuery Update?

      Die Idee dahinter: funktionale Berechnung und Update in 2 Phasen zu trennen. Aber wie über die Semantik habe ich so leider nichts gefunden.

      7. Architektur eines XML-Datenbanksystems?

      XML bietet viele Möglichkeiten, um ein Datenbanksystem aufzubauen:

      • Speichern der Daten: XML-Dateien
      • Schema: DTD bzw. XML-Schema
      • DB-Anfragen: XQuery, XPath
      • Programmierschnittstellen: SAX, DOM usw.

      Schönen Dank im Voraus!

      Julia

      1. Hallo Julia,

        Hier sind die Fragen und meine Antworten dazu. Könntest Du vielleicht darüberschauen und sagen, ob die Antworten korrekt / vollständig sind bzw. was ich ergänzen soll? Ich wäre Dir dafür sehr sehr dankbar!

        Klingt insgesamt plausibel.

        Zum Thema Semantik: dabei geht es um das Sequenz-basierte XQuery-Datenmodell, also um verfügbare Datentypen, Operatoren und Funktionen, die auf Sequenzen (…) und Inhaltsobjekte (Knoten, Arrays, Maps, …) angewendet werden können.

        Grüße,
        Thomas

        1. Hallo Thomas,

          vielen Dank für Deine Antwort und für die Ergänzung zur Semantik!

          Viele Grüße

          Julia