[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[xsl] Making a Table of Alphabetized Strings grouped by First Letter
Subject: [xsl] Making a Table of Alphabetized Strings grouped by First Letter From: Elizabeth Barham <soggytrousers@xxxxxxxxx> Date: 31 Jan 2002 05:21:06 -0600 |
Hi, I'm a newbie so please be patient! :-) I just looked at: http://www.dpawson.co.uk/xsl/sect2/N7450.html for clues as how to deal with this, but none of the examples seemed to address this topic directly as they dealt with numerical values (that is, it's number in the list) as opposed to their first letter value. I currently have, as a key, all the counties in the State of Texas. My goal is to have them look something like this: A B C Anderson Bailey Caldwell Andrews Bandera Calhoun Angelina Bastrop Callahan Aransas Baylor Cameron Archer Bee Camp Armstrong Bell Carson Bexar Cass Blanco etc. <xsl:for-each select="/projects/project/program-information/counties-served/county[generate-id(.)=generate-id(key('counties', @fips)[1])]"> <xsl:sort/> Where fips is a numerical identifier of the county. I am able to make a listing well enough and because of the dpawson page mentioned above I am able to do it better than before when it comes to their numerical value. While I can sort of see grabbing all the county names whose first initial is different than the preceding, and then grabbing all those whose first initial is the same, what is also troubling me is how should I go about ending the table row (such as with 'C') when I do not know if there is a county for every letter, for instance (while I suppose I could check, it seems best to let it figure it out itself). <xsl:for-each select="/projects/project/program-information/counties-served/county[generate-id(.)=generate-id(key('counties', @fips)[1])]"> <xsl:sort/> <!-- this gives me a unique county iteration --> <xsl:if select="substring(., 1, 1) != substring(preceding::county, 1, 1)"> <td> <table> <xsl:variable name="letter"> <xsl:value-of select="substring(.,1,1)" /> </xsl:variable> <tr><th><xsl:value-of select="$letter"/></th></tr> <xsl:for-each select=".|following-sibling::county[substring(.,1,1) = $letter]"> <tr><td><xsl:value-of select="."/></td></tr> </xsl:for-each> </table> </td> </xsl> </xsl:for-each> While this *might* produce a individual table within a td element, how do we know when to end the tr? Perhaps if we could determine the number of letters the strings begin with in advance? Thank you, Elizabeth XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Web publishing using XML+XSL , Semih Hazar | Thread | Re: [xsl] Making a Table of Alphabe, Joerg Pietschmann |
SV: [xsl] Web publishing using XML+, Juan Perez | Date | RE: [xsl] check if a* not equal to , Bryan Rasmussen |
Month |