Re: [xsl] XPath expression to convert XSD enumerations into aregex, longest value first

Subject: Re: [xsl] XPath expression to convert XSD enumerations into aregex, longest value first
From: "Wendell Piez wapiez@xxxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 8 Jul 2022 12:35:37 -0000
Even sweeter and more sugary

let $backward := function($s) { - string-length($s) }
return /*/xs:restriction/xs:enumeration/@value => sort((), $backward) =>
string-join('|')

Not to everyone's taste, for sure.

Cheers, Wendell


On Fri, Jul 8, 2022 at 6:34 AM Martin Honnen martin.honnen@xxxxxx <
xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:

> Am 08.07.2022 um 12:23 schrieb Roger L Costello costello@xxxxxxxxx:
> >> At this point we're stuck because the requirements aren't clear.
> >> In the example, 12 appeared in the output before 11, but we
> >> don't know why: there was nothing in the requirements
> >> statement that said it should.
> >
> > The only requirement is for the longer strings to come first.
> >
> > So any of these results would be fine:
> >
> > 12|11|10|9|8|7|6|5|4|3|2|1
> > 11|12|10|9|8|7|6|5|4|3|2|1
> > 10|11|12|9|8|7|6|5|4|3|2|1
> > 12|11|10|1|2|3|4|5|6|7|8|9
> > ...
> >
> > What is the simplest XPath expression to achieve that result?
>
> As I indicated earlier, if you know => as an operator you might consider
> the following simpler:
>
> xs:restriction/xs:enumeration/@value/string()
> => sort((), function($s) { -string-length($s) })
> => string-join('|')
>
> But in the end its syntactic sugar.
> 
>
>

-- 
...Wendell Piez... ...wendell -at- nist -dot- gov...
...wendellpiez.com... ...pellucidliterature.org... ...pausepress.org...
...github.com/wendellpiez... ...gitlab.coko.foundation/wendell...

Current Thread