Als Abfragesprache für XML-Dokumente scheint sich XQuery durchzusetzen. Im Frühjahr 2001 wurde unter der Adresse http://www.w3.org/TR/xquery ein W3C Working Draft veröffentlicht.
In XQuery werden Abfragen durch eine Kombination von FLWR-Ausdrücken, Pfadausdrücken und Element-Konstruktoren formuliert. Ein FLWR-Ausdruck (gesprochen wie das englische Wort Flower) besteht aus einer Sequenz der Schlüsselworte FOR, LET, WHERE, RETURN. Ein Pfadausdruck faßt wie die XML Path Language XPath ( http://www.w3.org/TR/xpath.html ) das Dokument als Baum von Element-Knoten auf und liefert durch gezielte Navigation den gewünschten Teilbaum ab. Dabei trennt ein einzelner Schrägstrich ('/') Elemente in direkter Vater/Sohn-Beziehung, ein doppelter Schrägstrich ('//') bedeutet eine Nachkommen-Beziehung über eine oder auch mehrere Baum-Ebenen. Ein Element-Konstruktor klammert das Ergebnis der Query mit öffnenden und schließenden Tags.
document("dozenten.xml")/dozenten/dozent[Rang="C4"]
<aktive-Dozenten> FOR $d IN document("dozenten.xml")//dozent LET $v := document("vorlesungen.xml")//vorlesung[gelesenVon=$d/PersNr] WHERE count($v) > 0 RETURN <Dozent>$d/Name</Dozent> </aktive-Dozenten>
<Vorlesungsverzeichnis> FOR $d IN document("dozenten.xml")//dozent, $v IN document("vorlesungen.xml")//vorlesung WHERE $d/PersNr = $v/gelesenVon RETURN <Veranstaltung>$d/Name, $v/Titel</Veranstaltung> </Vorlesungsverzeichnis>
<Vorlesungsverzeichnis> FOR $d IN document("dozenten.xml")//dozent RETURN <Dozent>$d/Name</Dozent> FOR $v IN document("vorlesungen.xml")//vorlesung WHERE $d/PersNr = $v/gelesenVon RETURN <Vorlesung>$v/Titel</Vorlesung> </Vorlesungsverzeichnis>
<Dozenten> FOR $d IN document("dozenten.xml")//dozent LET $s := sum(document("vorlesungen.xml") //vorlesung[gelesenVon=$d/PersNr]/SWS) WHERE $s > 0 RETURN <Dozent> <Name>$d/Name</Name> <Lehrbelastung>$s</Lehrbelastung> </Dozent> </Dozenten>
<Rang-wie-Sokrates> FOR $d1 IN document("dozenten.xml")//dozent[Name="Sokrates"], $d2 IN document("dozenten.xml")//dozent[Rang=$d1/Rang] RETURN <Name>$d2/Name</Name> </Rang-wie-Sokrates>