[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Re: [xsl] Alphabetic sort retaining first letters as Headers
Subject: Re: [xsl] Alphabetic sort retaining first letters as Headers From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Mon, 1 Nov 2004 20:59:52 +0000 |
Hi Dave, > I have been trying to sort and display a a set of elements > alphabetically and grab the first letter for a group header. The > header would only appear once and won't appear if there is an empty > set (eg. 'X'). This is a grouping problem. Using the Muenchian method for grouping, you should do this: First, define a key that indexes each of the elements using the first letter of the element: <xsl:key name="elements" match="element" use="substring(., 1, 1)" /> This means you can get all the elements that begin with 'B', using: key('elements', 'B') You can then access the first element of each group using: element[generate-id(.) = generate-id(key('elements', substring(., 1, 1))[1])] If I understand what you're after correctly, the code for your actual problem should look something like: <xsl:key name="maps" match="maps | maptitle" use="substring(., 1, 1)" /> <xsl:template match="body" mode="alpha-title"> <xsl:for-each select="(part/chapters/mapunits/maps | part/chapters/mapunits/maptitle) [generate-id(.) = generate-id(key('maps', substring(., 1, 1))[1])]"> <xsl:sort select="." /> <xsl:variable name="firstletter" select="substring(., 1, 1)" /> <div class="trackNumber"> <xsl:value-of select="$firstletter" /> </div> <xsl:for-each select="key('maps', $firstletter)"> <div class="mapTitle"> <a href="../../Maps/{../../@chap}/{../@mapunitNumber}/{@mapNumber}/Normal/"> <xsl:value-of select="." /> </a> </div> </xsl:for-each> </xsl:for-each> </xsl:template> Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Alphabetic sort retaining fir, David Laurie | Thread | [xsl] Collapsing run-on tag chains , Richard Bondi |
Re: [xsl] How to access all attribu, Jeni Tennison | Date | Re: [xsl] Collapsing run-on tag cha, David Carlisle |
Month |