Does that actually work ?  My tests show it doesnt ... the ascending clause is 
not variable.
Ie. This fails for me :

for $x in (1,3,2,5)
order by if( fn:true() ) then $x ascending else ()
return $x


You can make a function that inverts the sort order ...

declare function local:f( $value , $order )
{
   if( $order ) then $value else - $value

};


for $x in (1,3,2,5)
order by local:f($x,fn:true())
return $x


-----------------------------------------------------------------------------
David Lee
Lead Engineer
MarkLogic Corporation
[email protected]
Phone: +1 812-482-5224
Cell:  +1 812-630-7622
www.marklogic.com<http://www.marklogic.com/>


From: [email protected] 
[mailto:[email protected]] On Behalf Of Tim
Sent: Wednesday, March 27, 2013 3:28 PM
To: 'MarkLogic Developer Discussion'
Subject: Re: [MarkLogic Dev General] How to program the order by clause in 
FLWOR?

Thanks Geert!

Tim

From: [email protected] 
[mailto:[email protected]] On Behalf Of Geert Josten
Sent: Wednesday, March 27, 2013 3:23 PM
To: MarkLogic Developer Discussion
Subject: Re: [MarkLogic Dev General] How to program the order by clause in 
FLWOR?

Hi Tim,

Just leave out the braces, and replace $default with ()..

:)

Cheers,
Geert

Van: 
[email protected]<mailto:[email protected]>
 
[mailto:[email protected]<mailto:[email protected]>]
 Namens Tim
Verzonden: woensdag 27 maart 2013 20:19
Aan: 'MarkLogic Developer Discussion'
Onderwerp: [MarkLogic Dev General] How to program the order by clause in FLWOR?

Hi Folks,

Is there a simple way to program the order by clause in FLWOR to make it 
optional based on parameters?  I have a web page that I want to sort as 
indicated by the user.

For example, this code illustrates what I'd like to do but doesn't work:

let $sort-option := "a descending"
return
for $row in $rows
let $a := $row/a/text()
let $b := $row/b/text()
order by {if ($sort-option eq "a ascending") then $a ascending else $default}
return <tr><td>{$a}</td><td>{$b}</td></tr>

Thanks!

Tim Meagher

_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to