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

Re: [xsl] A nice way to implement the ANDing of the comparison of pairs of items in a sequence?


Subject: Re: [xsl] A nice way to implement the ANDing of the comparison of pairs of items in a sequence?
From: Wolfgang Laun <wolfgang.laun@xxxxxxxxx>
Date: Fri, 6 Sep 2013 09:41:22 +0200

I guess any implementation would use incrementing position values
anyway, but is this kind of filtering *defined* to be stable, i.e.,
preserving the relative order of items?

-W

On 05/09/2013, Michael Kay <mike@xxxxxxxxxxxx> wrote:
>
> How about
>
> deep-equal($v[position() mod 2 = 0], $v[position() mod 2 = 1])
>
> Michael Kay
> Saxonica
>
> On 5 Sep 2013, at 19:51, Costello, Roger L. wrote:
>
>> Hi Folks,
>>
>> The value of this variable is a sequence of strings:
>>
>> <xsl:variable name="checkPairs"
>>     select="('Sally', 'Sally', 'Beth', 'Beth', 'Mary', 'Mary')"
>> as="xs:string*"/>
>>
>> I want to compare consecutive items and then AND the result of the
>> comparisons.
>>
>> That is, compare the first string to the second string, the third string
>> to the fourth string, the fifth string to the sixth string, and so on.
>> Then AND the results together.
>>
>> Thus,
>>
>>    ('Sally' eq 'Sally') and ('Beth' eq 'Beth') and ('Mary' eq 'Mary')
>>
>> returns true.
>>
>> But if the variable is this:
>>
>> <xsl:variable name="checkPairs"
>>     select="('Sally', 'Beth', 'Beth', 'Beth', 'Mary', 'Mary')"
>> as="xs:string*"/>
>>
>> the result is false since
>>
>>    ('Sally' eq 'Beth') and ('Beth' eq 'Beth') and ('Mary' eq 'Mary')
>>
>> is false.
>>
>> Is there a nice way to implement this?
>>
>> /Roger


Current Thread