[xquery-talk] if statement inside FLWOR-expressions

Piewald, Georg georg.piewald at siemens.com
Fri Aug 22 12:14:53 PDT 2008


(Sorry Jens, by mistake I replied to you personally instead of the list
- I'm forced to use MS Outlook here, which I'm not used to...)


Jens Teubner wrote:
> 
> On Fri, Aug 22, 2008 at 09:22:30AM +0200, Piewald, Georg wrote:
> 
> >         if ($item < 3) then 
> >             let $var := 'abc'
> >         else
> >             let $var := 'def'
> >         return 
> >             <p>Text {$var}</p>
> 
> XQuery is a functional, expression-oriented language. What you want to
> write is
> 
>   let $var := if ($item < 3) then 'abc' else 'def' 
>   return <p>Text {$var}</p>
> 
> Observe how the `if ...' does not imply a certain control 
> flow. Rather,
> the entire clause is an expression that evaluates to either 'abc' or
> 'def'.

Thank you, that clearifies a lot. But now I want to go a step further.
In my original problem I don't have only one variable $var to set in
each of the if-branches, but several ones. So my original (and of course
wrong) approach was

         if ($item < 3) then 
             let $var1 := 'abc'
             let $var2 := ...
             ...
         else
             let $var1 := 'def'
             let $var2 := ...
             ...
         return 
             <p>Text {$var1} text {$var2} </p>

I don't see how to map this to the correct syntax in a straightforward
way.
Thanks again, Georg



More information about the talk mailing list