XQuery
XQuery er en computer forespørgselssprog tillader ikke kun at udtrække oplysninger fra en XML -dokument , eller en samling af XML-dokumenter, men også til at udføre komplekse beregninger fra den udtrukne information og til at rekonstruere nye dokumenter eller XML-fragmenter.
XQuery er en W3C- specifikation, hvis endelige version 1.0 stammer frajanuar 2007, og hvis udvikling tog næsten otte år. XQuery er udviklet i forbindelse med XSLT 2 , en større revision af XML-transformationssprog XSLT , som den deler delmængden XPath 2.0 (in) med .
XQuery spiller i forhold til XML-data en rolle svarende til SQL i forhold til relationelle data, og man kan finde analogier mellem disse to sprog.
Syntakser
Der er to forskellige syntakser for XQuery:
- den "naturlige" ikke-XML- syntaks, også kendt som FLWOR (udtale blomst), hvis navn kommer fra de fem hovedklausuler, der komponerer den ( for , lad , hvor , rækkefølge efter og returnere );
- XQueryX- syntaksen (for "XML-syntaks for XQuery"), hvor en forespørgsel er et XML-dokument. Som et resultat er den meget mere detaljeret og mindre læselig end den foregående og er beregnet til formelle manipulationer af programmer (muligvis selv skrevet i XQuery).
Eksempel
Overvej følgende XML-dokument, der findes på URL http://www.example.com/ og navngivet eksempel.xml:
<employes>
<employe>
<nom>Durant
</nom>
<prenom>Albert
</prenom>
<date_naissance>23/09/1958
</date_naissance>
</employe>
<employe>
<nom>Dupont
</nom>
<prenom>Alphonse
</prenom>
<date_naissance>23/12/1975
</date_naissance>
</employe>
<employe>
<nom>Dupont
</nom>
<prenom>Isabelle
</prenom>
<date_naissance>12/03/1967
</date_naissance>
</employe>
...
</employes>
Følgende FLWOR-forespørgsel:
for $b in document ("http://example.com/exemple.xml")//employe
where $b/nom = "Dupont"
return
<dupont>{
$b/prenom,
$b/date_naissance
}</dupont>
returnerer følgende resultat:
<dupont>
<prenom>Alphonse
</prenom>
<date_naissance>23/12/1975
</date_naissance>
</dupont>
<dupont>
<prenom>Isabelle
</prenom>
<date_naissance>12/03/1967
</date_naissance>
</dupont>
Sprogkomponenter
XQuery er et modulopbygget sprog: sprogets kerne kan suppleres med valgfri moduler.
- Det minimale sprog er baseret på XPath 2- standarden (som angiver selve XML-forespørgselssproget), suppleret med følgende hovedfunktioner:
- FLWOR-udtrykket (For Let Where Order by Return), en stærk loop-sætning med mange funktioner, der minder meget om SQL SELECT. Takket være hvor er det muligt at skrive indre eller ydre sammenføjninger . XQuery version 1.1 tilføjer gruppen efter og "vinduet" (mulighed for at opdele indgangssekvensen i henhold til boolske forhold). Der er andre konstruktioner, såsom hvis og typeswitch, der kan sammensættes med FLWOR.
- De buildere , instruktioner til rekonstruktion XML fragmenter, med en syntaks meget lig selve XML (et fragment velformede XML er en xquery udtrykket er gyldigt). Dette gør det muligt at skrive modeller ( skabeloner ), der indeholder dynamisk evaluerede udtryk, som de mange sprog (eksempel: PHP) til generering af websider.
- Brugerdefinerede funktioner.
- Et sæt foruddefinerede funktioner og operatører, der er fælles for XPath2, XQuery og XSLT 2.
Valgfri moduler:
- Det valgfri Full Axis- modul giver dig mulighed for at drage fordel af forfædren, forfædren eller selvet, efterfølgende, efterfølgende søskende, foregående og foregående søskende "akser" i et XPath-udtryk.
- XQuery-moduler giver dig mulighed for at importere biblioteker med XQuery-funktioner eller variabler til et XQuery-program.
- Det valgfri skemaimportmodul giver dig mulighed for at specificere de XML-skemaer, som de manipulerede data reagerer på, hvilket gør det muligt at udlede typer af bestemte udtryk og muligvis optimere forespørgslerne.
- Det valgfri skemavalideringsmodul giver dig mulighed for at bruge mekanismen til validering af XML-fragmenter mod skemaer.
- Det valgfri "Statisk typemodul" -modul understøtter mere omfattende præ-udførelsestype-kontrol.
Udvidelser:
-
XQuery opdatering Facility udvikles standard (2010 foreløbig standard), der strækker XQuery XML noder modifikation instruktioner:insert node, delete node, rename node, replace node, replace value, copy/modify.
-
XQuery Full-Text er en udvidelse under udvikling (foreløbig standard i 2008), der specificerer tekstsøgning integreret i XQuery. Det giver mulighed for kontekstuel søgningefter ord og sætninger, dvs. begrænset for eksempel til indholdet af et bestemt XML-element.
-
XQuery Scripting , under udvikling (Working Draft ofapril 2010) Ændrer programmering model for at tilføje instruktion (sekventielle blokke, while, exit) at sikre udførelsen orden.
Sprogkarakteristika
- XQuery er en funktionel sprog (hvor enhver bygning returnerer en værdi) derfor uden side effekt , det vil sige ikke direkte ændre de data, som det fungerer. XQuery Scripting er en undtagelse fra dette princip.
- I modsætning til de fleste funktionelle sprog har XQuery ikke andenordensfunktioner (som kan være argumenter for andre funktioner). Dette ændres i XQuery 1.1.
- XQuery kan valgfrit indtastes stærkt (i betydningen XML-skemaer) ved kompilering og ved kørsel.
- Disse aspekter deles med XSLT 2, som er et sprog tæt på XQuery i dets funktionaliteter.
- Programmering i XQuery er generelt af en mere "bydende" stil end i XSLT, dvs. det kræver forudgående kendskab til strukturen i de håndterede XML-data. Omvendt angiver XSLT erklærende processer på hver type XML-knude uafhængigt af hinanden. Programmering i XQuery er derfor mere naturlig, men lidt mindre kraftfuld og modulær end i XSLT.
- XQuery Scripting-udvidelsen tilbyder en mere klassisk programmeringsmodel.
Datamodel
- Alle værdier, der håndteres af XQuery (såvel som XPath2 og XSLT 2), er sekvenser (eller lister) af emner . Der er ingen indlejrede sekvenser: en sekvens af sekvenser er altid "fladtrykt".
- Varerne deles i to hovedgrupper:
- XML-noder, som i sig selv er af seks forskellige slags: dokument, element, attribut, tekst, kommentar, behandlingsinstruktion .
- Der er 48 grundlæggende typer (lånt fra XML-skemaer), herunder numeriske typer (heltal, decimaler, floats), strenge og derivater, datoer, tidspunkter og varighed.
- Databasetyperne kan udvides ved at importere skemaer (valgfri funktionalitet).
Eksempler:
- Udtrykket 1 til 5 returnerer sekvensen af heltalsposter: 1 2 3 4 5 .
- Udtrykket for $ i i 1 til 5 returnerer $ i * $ i returnerer rækkefølgen af emner af typen heltal: 1 4 9 16 25 .
- Udtrykket for $ i i 1 til 3 returnerer <X> {$ i} </X> returnerer rækkefølgen af elementknudepunkter: <X> 1 </X> <X> 2 </X> <X> 3 </ X> .
- En sekvens er ikke nødvendigvis af en homogen type. Eksempelvis returnerer udtrykket (1, 2), 2.5, (sandt (), "af teksten") rækkefølgen af emner 1 2 2,5 sandt () "af teksten" af henholdsvis heltal (2 gange), decimal, boolsk, karakterstreng.
Se også
Relaterede artikler
Implementeringer
De W3C XQuery portal lister omkring halvtreds XQuery implementeringer open-source eller kommercielle eller produkter eller forskningsprojekter baseret på XQuery.
De indfødte XML-databaser, der understøtter XQuery, er (i 2009) omkring femten, hvoraf omkring en tredjedel er open source.
eksterne links