XQuery er et spørrespråk med enkel programmeringsfunksjonalitet beregnet for å gjøre spørringer mot XML-data. XQuery er semantisk likt SQL og OQL. Språket støtter visse grunnelementer fra funksjonell programmering.
XQuery 1.0 ble utviklet av World Wide Web Consortium sin arbeidsgruppe for XML Query og ble anbefalt standard i januar 2007. Arbeidet ble nært koordinert med utviklingen av XSLT 2.0, som er en lignende teknologi. XQuery 1.0 er en utvidelse av XPath 2.0.
Viktige mål for XML Query er å utvikle en fleksibel spørrefunksjonalitet for web-dokumenter slik at det blir mulig med effektiv kommunikasjon mellom World Wide Web og databaser, og slik at samlinger av XML-dokumenter kan brukes som en database.[1]
XPath
XPath er et språk som brukes primært til å velge ut deler av et XML-dokument. For dette formålet modelleres XML-dokumentet som et tre av noder, og XPath kan velge noder gjennom den hierarkiske strukturen i treet. XPath er en del av XQuery 1.0 og brukes i XSLT 2.0. XPath har operatorer og funksjoner som kan brukes til å velge data på vilkår og sammenligne ulike oppføringer.[2]
FLWOR
FLWOR er en betegnelse på uttrykkene som brukes i XQuery. FLWOR brukes til å gi XPath-spørringer mer funksjonalitet, for eksempel til å slå sammen sett av data (join).
For lager en sekvens av tupler
Let binder en sekvens til en variabel
Where filtrerer tupler på et booleansk uttrykk
Order by sorterer tuplene
Return undersøkes en gang for hvert tuppel
Eksempel
for $avd in doc("avdelinger.xml")//avdnr
let $ans := doc("ansatte.xml")//ansatt[avdnr = $avd]
where count($ans) >= 10
order by avg($ans/lonn) descending
return
<storAvdeling>
{ $avd,
<antallPersoner>{count($e)}</antallPersoner>,
<snittLonn>{avg($ans/lonn)}</snittLonn>
}
</storAvdeling>
(Merk at '//' ikke starter en kommentar, men er en del av syntaksen)