Re: [xsl] for-each-group group-by

Subject: Re: [xsl] for-each-group group-by
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Wed, 04 Apr 2012 22:22:13 +0100
To group by the first alpha character in ALL cases (not just those listed), use

group-by="replace(paperTitle, '^([P{L}]).*$', '$1')"

(not tested)

Michael Kay
Saxonica

On 04/04/2012 22:03, Craig Sampson wrote:
Hello,
   I am creating an index of paper titles using xsl:for-each-group to select and group by the titles of the papers alphabetically using the first character of the title.

Eg:
   <xsl:for-each-group select="//section" group-by="upper-case(substring(normalize-space(paperTitle),1,1))">
     <xsl:sort select="current-grouping-key()"/>
    . . .

Some of the paper titles start with double left hand quotes. Others start with a numeral. In those cases I want the group-by to use the first alpha character in the title string. I could do this if regular expressions were allowed in the group-by attribute, but they're not.

Can anyone suggest how to make this work?

Thanks,
   Craig

Current Thread