As Rob points out, the simplest solution for simple cases is to use reverse().

That doesn't work if you want a composite sort key - sort by ascending country 
then descending city. (Yes, an unconvincing use case, and frankly it's because 
of the difficulty of finding a convincing use case that we didn't include this 
capability).

If you know that the result of collation-key() will be xs:base64Binary then you 
can do it, I suspect, by 

fn:sort($places, function($p) { $p!country, $p!city => collation-key() => 
bin:not() } )

where bin:not is from http://expath.org/spec/binary#not

Michael Kay
Saxonica 


> On 3 Dec 2015, at 12:44, Rob Stapper <[email protected]> wrote:
> 
> Hi Christian,
> 
> I suppose it can't be this simple: reverse( sort( ('A', 'AA', 'B')))
> 
> Rob Stapper
> 
> -----Oorspronkelijk bericht-----
> Van: [email protected] [mailto:[email protected]] Namens 
> Christian Grün
> Verzonden: donderdag 3 december 2015 12:49
> Aan: [email protected]
> Onderwerp: [xquery-talk] fn:sort: sort for strings in descending order
> 
> Hi everyone,
> 
> As you may know, XQuery 3.1 introduces an interesting new fn:sort function, 
> which can be used as alternative for the order by clause in FLWOR expressions 
> [1]. It can e.g. be used to sort numbers in a descending order:
> 
>  sort(
>    1 to 10,
>    function($k) { -$k }
>  )
> 
> I would be interested if anyone has already tried to get the descending order 
> working for strings?
> 
>  sort(
>    ('A', 'AA', 'B'),
>    function($k) { ... }
>  )
> 
> I assume that string-to-codepoints could be used, and all Unicode points 
> could then be negated, and additionally longer Unicode sequences would need 
> to be preferred over shorter ones… But maybe there is a more concise solution?
> 
> Thanks in advance,
> Christian
> 
> [1] http://www.w3.org/TR/xpath-functions-31/#func-sort
> 
> _______________________________________________
> [email protected]
> http://x-query.com/mailman/listinfo/talk
> 
> 
> ---
> Dit e-mailbericht is gecontroleerd op virussen met Avast antivirussoftware.
> http://www.avast.com
> 
> 
> _______________________________________________
> [email protected]
> http://x-query.com/mailman/listinfo/talk



_______________________________________________
[email protected]
http://x-query.com/mailman/listinfo/talk

Reply via email to