Omet navegació

4.2.2.1 - Consultes XQuery

Generalment una consulta XQuery consistirà en aconseguir les dades amb les quals es vol treballar, filtrar-les i retornar el resultat com a XML. L’expressió més simple que es pot fer en XQuery és escriure un element buit:

<Hola />

En executar aquesta ordre el resultat serà:

<?xml version="1.0" ?>
<Hola/>

Encara que a nosaltres en l'entorn de eXist ens eixirà únicament l'etiqueta. A pesar d'això serà un document ben format.

Aquesta és una de les característiques importants de XQuery. Pot escriure literalment un text. Però si en el resultat es defineixen etiquetes, l’expressió només serà correcta si el resultat final està ben format. Per exemple, executar el següent en XQuery donarà un error, ja que el resultat final no està ben format:

<a>

Cannot compile xquery: exerr:ERROR err:XPST0003: No closing end tag found for element constructor: a [at line 2, column 2]

(observeu com en l'error ens avisa que no ha trobat el tancament de l'etiqueta, és a dir, que falta </a>)

Però a pesar de poder escriure text, el més corrent és recuperar algun tipus de dades, avaluar-les i retornar el resultat amb un return, que és la instrucció que s’encarrega de generar les sortides.

Una altra característica important és que fa servir variables. Per exemple la següent és una expressió XQuery correcta que assigna el valor 5 a $a i després en retorna el valor:  

let $a:=5
return $a

El resultat d’executar-ho amb XQuery serà:

5

A diferència del que passa amb els literals, el return s’executa una vegada per cada valor que agafa del for, de manera que si hi ha una expressió que es fa més d’una vegada:

for $a in (1,2)
return <Hola/>

El return s'executaria més d'una vegada:

<Hola/>
<Hola/>