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

Re: [xsl] Re: Sorting on two levels


Subject: Re: [xsl] Re: Sorting on two levels
From: "Michele R Combs mrrothen@xxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 15 Apr 2015 14:35:24 -0000

I did try  <xsl:apply-templates select="current-group()">, thinking it would
just go through and apply the existing indexterm, primary, secondary templates
-- but I got the entire group in a chunk, it didn't seem to apply templates to
each element  individually.  I'll go back and look, maybe I did something
wrong there.  I wasn't using mode, maybe that was the problem.

<xsl:for-each select="current-group()"> makes sense, will give that a try.

Last question: if I want to do something at the end of each group, I'd put
that instruction right before the </xsl:for-each-group>, correct?


-----Original Message-----
From: Martin Honnen martin.honnen@xxxxxx
[mailto:xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx]
Sent: Wednesday, April 15, 2015 10:04 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] Re: Sorting on two levels

Michele R Combs mrrothen@xxxxxxx wrote:
> The suggestion offered yesterday works great as far as the sorting, but I
need to do certain things to each item in a group as it's output, such as
wrapping each ID in an <a> element.  What I tried is shown below, but it
results in @href containing *all* the ids for the group.  How do I process
each item in a group separately?  Do I need to at some point just do
<xsl:apply-templates select=" current-group()"> and then rely on templates for
primary, secondary, etc.?  I did try that but couldn't seem to get it to work
-- either I got no output, or I got the entire group in a chunk.

>
>                              <a>
>
>                                 <xsl:attribute name="href">
>
>                                      <xsl:value-of
select="current-group()/@id"/>
>
>                                 </xsl:attribute>
>
>                                 <xsl:value-of select="current-group()/@id"
separator=", "/>
>

If you want to map each item in a group to an HTML "a" element then use

   <xsl:for-each select="current-group()">
     <a href="{@id}">
       <!-- not sure what you want to output for the link -->
       <xsl:value-of select="@id"/>
     </a>
   </xsl:for-each>

or use

   <xsl:apply-templates select="current-group()" mode="link"/>

and write a template

   <xsl:template match="indexterm" mode="link">
     <a href="{@id}">
       <!-- not sure what you want to output for the link -->
       <xsl:value-of select="@id"/>
     </a>
    </xsl:template>


Current Thread