Re: [xsl] Grouping by letters but keep symbols together

Subject: Re: [xsl] Grouping by letters but keep symbols together
From: "Graydon graydon@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 25 Jan 2019 15:07:09 -0000
On Fri, Jan 25, 2019 at 02:44:50PM -0000, Rick Quatro rick@xxxxxxxxxxxxxx scripsit:
>    I am creating a glossary and I want to group entries under each letter of
>    the alphabet. I am using this and it is working fine:
[snip]
>    However, I want to group entries that start with a symbol or number all
>    together under one group. I am not sure what to use for the group-by
>    attribute so that letters are separate from each other and all of the
>    non-letter characters are in the same group. Any suggestions would be
>    appreciated. Thank you very much.

I'd use a Unicode character category match for this:

<xsl:for-each-group select="glossentry"
   group-by="(substring(upper-case(glossterm),1,1)[matches(.,'\p{Lu}')],'NON-LETTER-GROUP')[1]">
    <topicref navtitle="{current-grouping-key()}" toc="no">
        ...
    </topicref>
</xsl:for-each-group>

What you put in for "NON-LETTER-GROUP" might depend on where or how
you're sorting the glossary entries.

-- Graydon

Current Thread