[xquery-talk] fn:sort: sort for strings in descending order
Rob Stapper
r.stapper at lijbrandt.nl
Fri Dec 4 02:07:24 PST 2015
The difficulty in Christian's case lays in the variable string length. The
string length is part of ordering algorithm. For a reverse order one would
need to create a string with an inverse string length.
I would not know how to create a function nor how to define a collation that
does this.
I'm not sure if Michael's solution: returning an inverse binary image, how
intriguing that one may be, tackles this. (can't check this)
So, I would still put my money on the reverse()-method.
Rob
PS. The composite sort key is another tough cookie to crumble. I feel
challenged.
-----Oorspronkelijk bericht-----
Van: talk-bounces at x-query.com [mailto:talk-bounces at x-query.com] Namens
Michael Kay
Verzonden: donderdag 3 december 2015 15:19
Aan: Michael Kay
CC: talk at x-query.com; Christian Grün; Rob Stapper
Onderwerp: Re: [xquery-talk] fn:sort: sort for strings in descending order
> On 3 Dec 2015, at 13:10, Michael Kay <mike at saxonica.com> wrote:
>
> 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
>
Sorry, that's wrong. The empty string sorts first in ascending order, under
this function it will still sort first in descending order. Need to do
something a bit more subtle.
Michael Kay
Saxonica
_______________________________________________
talk at x-query.com
http://x-query.com/mailman/listinfo/talk
---
Dit e-mailbericht is gecontroleerd op virussen met Avast antivirussoftware.
http://www.avast.com
More information about the talk
mailing list