[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Duplicates in a sequence ?


Subject: Re: [xsl] Duplicates in a sequence ?
From: "Leo Studer leo.studer@xxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 25 Mar 2015 17:03:06 -0000

Nice xPath 3.1 approach, thanks.

> On 25.03.2015, at 12:31, Michael Kay mike@xxxxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> I don't know of a better solution.
>
> If the sequences are very long and you want something that will stop as soon
as it hits the first duplicate, you could use recursion and maps:
>
> function has-dupes ($in as xs:integer*, $found as map(*)) {
>  map:contains($found, head($in)) or has-dupes(tail($in), map:put($found,
head($in), 0)
> }
>
> then
>
> has-dupes($sequence, map{})
>
> Michael Kay
> Saxonica
> mike@xxxxxxxxxxxx
> +44 (0) 118 946 5893
>
>
>
>
> On 25 Mar 2015, at 10:58, Leo Studer leo.studer@xxxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
>> Hello
>>
>> I have a sequence and want to know whether there are duplicate values in
it.
>>
>> I came out with the following and think there must be an easy solution. Any
suggestion?
>>
>> let $sequence :=(1,12,14,17,22,12) return
(count(distinct-values($sequence)) ne count($sequence))


Current Thread
Keywords