Re: [xsl] Using xsl:iterate inside <xsl:for-each-group> xslt 3.0

Subject: Re: [xsl] Using xsl:iterate inside <xsl:for-each-group> xslt 3.0
From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 18 Aug 2020 16:36:35 -0000
Am 18.08.2020 um 18:14 schrieb Terry Ofner tdofner@xxxxxxxxx:
Interesting tangle I am in. I tried the map:merge in both the iterate
and apply-templates solutions. I can indeed reference the bpb and pull
it into the output.B However, it seems to play havoc with the $groups
output. Here is the changed iterate:

 B  B  B  B  B  B  B  B  B  B  B <xsl:iterateselect="p[@class = 'nl'] !
map:merge(($groups, map
 B  B  B  B  B  B  B  B  B  B  B  B  { 'p' : . }))">
<xsl:text>&#10;</xsl:text>
<write_choiceB  num="{position() - 1}"letter="{?letter}"
 B  B  B  B  B  B  B  B  B  B  B  B  B  B  term="{?term}"item="{?p}"/>
</xsl:iterate>

Yes, sorry, I got lost in my own suggestion, the right code should be


<xsl:apply-templates
        select="for $p in p[@class = 'nl']
                return $groups
                       !
                       map:merge(
                         ($groups,
                          map { 'p' : $p })
                       )"/>

or the same expression for the iterate.

$groups is a sequence of maps we want to process for each "p" and
including the "p" in each map of the sequence is what we need, not to
merge the sequence of maps.

Current Thread