XQuery

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.XML Query (XQuery) Requirements. W3C Arbeidsgruppe-notat 23. mars 2007

 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.XML Path Language (XPath) 2.0 W3C Anbefaling 23. januar 2007

 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)

 Referanser 

Kategori:Databaser