RE: [xsl] Nested for-each-group

Subject: RE: [xsl] Nested for-each-group
From: "Andrew Welch" <ajwelch@xxxxxxxxxxxxxxx>
Date: Tue, 28 Sep 2004 14:01:13 +0100
Thanks Mike,

Plenty to work with there :)

Cheers
andrew


> group-starting-with and group-ending-with partition the
> population: the first/last item in the population starts/ends
> a group whether or not it matches the pattern.
>
> The simplest way to discard the spurious groups in this case
> is probably to do
>
> xsl:if test="position()=last()"
>
> in the outer group, and
>
> xsl:if test="position()=1"
>
> in the inner group.
>
> An interesting way of tackling the problem. I think I would have used
> "intersect":
>
> <div>
>  <xsl:value-of select="
>     sum (
>       (col[@colname=$s]/(.|following-sibling::col)
>                intersect
>        col[@colname=$e]/(.|preceding-sibling::col))/@width)"/>
> </div>
>
> Unless I thought about it more carefully (!), in which case I
> would use a predicate of the form:
>
> sum(col[. is $S or . is $E or (. >> $S and . << $E)])
>
> Yet another solution:
>
> for $s in index-of(col/@colname, $start),
>     $e in index-of(col/@colname, $end)
> return
>     sum(subsequence(col/@width, $s, $e - $s + 1)),

Current Thread