Omet navegació

4.2.2.5 - Alternatives

La instrucció if ens permetrà fer una cosa o una altra segons si es compleix la condició especificada o no. Per exemple, podem fer una llista d’alumnes en què s’especifique si han aprovat o no a partir del valor que hi ha en l’element <nota>.

let $doc := doc("/db/Tema9/classe.xml")
let $aprovat := 5
for $b in $doc//alumne
return
if ($b/nota >= $aprovat) then
<aval> { $b/nom/text() } està aprovat</aval>
else
<aval> { $b/nom/text() } no està aprovat</aval>

Això generarà el resultat següent:

<aval>Albert està aprovat</aval>
<aval>Bernat no està aprovat</aval>
<aval>Joan està aprovat</aval>

La instrucció else és habitual en llenguatges de programació, però a diferència del que passa normalment, en XQuery sempre s'ha d'especificar el else, encara que no es vulga fer res (en aquest cas posaríem uns parèntesis sense res dins). Si no està l'else, donarà error.

for $alu in doc("/db/Tema9/classe.xml")//alumne
return <alumne>
{ $alu/nom }
{ if ($alu/nota > 5) then
<aprovat/>
  else () }
 </alumne>

<alumne>
    <nom>Albert</nom>
    <aprovat/>
</alumne>
<alumne>
    <nom>Bernat</nom>
</alumne>
<alumne>
    <nom>Joan</nom>
    <aprovat/>
</alumne>