Re: [xsl] Can group-by treat its target it two ways?

Subject: Re: [xsl] Can group-by treat its target it two ways?
From: "Mark" <mark@xxxxxxxxxxxx>
Date: Sat, 5 Nov 2011 11:18:49 -0700
Hi Michael and Martin,
I believe you are right, no general solution exists for the reasons Michael mentioned.
However, for the archives, I ended up with this monstrosity that does the job (ugly as it is):


<xsl:for-each-group select="Word" group-by="if (lower-case(substring(@word,1,1)) eq 'D
' or lower-case(substring(@word,1,1)) eq 'E' or lower-case(substring(@word,1,1)) eq 'E!' or lower-case(substring(@word,1,1)) eq 'E>') then lower-case(substring(@word,1,1)) else if (lower-case(substring(@word,1,2)) eq 'ch') then 'ch' else lower-case(substring(cps:remove-diacritics(@word), 1, 1))">


<xsl:result-document href="{concat('index/cz-', current-grouping-key())}.htm">

Where cps:remove-diacritics() is defined as:
<xsl:function name="cps:remove-diacritics">
<xsl:param name="in-string"/>
<xsl:value-of select="replace(normalize-unicode($in-string, 'NFKD'), '[&#x0300;-&#x036F;]', '')"/>
</xsl:function>


Thanks all,
Mark

Current Thread