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

Re: [xsl] Duplicates in a sequence ?


Subject: Re: [xsl] Duplicates in a sequence ?
From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 25 Mar 2015 11:31:32 -0000

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))
>
>
> Thanks in advance
> Leo


Current Thread