Subject: Re: [xsl] a sorting conundrum From: Kevin Rodgers <kevin.rodgers@xxxxxxx> Date: Thu, 3 Mar 2005 08:43:50 -0700 |
John Fitzgibbon writes: > I am attempting to sort an a list of personal names. All of the names > consist of either a first name followed by a last name or of a last name > only (there are no middle names). Both parts of the name, when present, > are enclosed within the one tag (span) which has a class='person' > attribute, the same tag is used to enclose a last name only. I am > attempting to sort by last name like so > > <xsl:for-each select="html/body//span[@class='person']"> > <xsl:sort select="substring-after(., ' ')"/> > <xsl:sort select="."/> > <xsl:sort select="substring-before(., ' ')"/> > > The problem is that names consisting of a last name only appear first in > my alphabetical sequence and are sorted; these are followed by names > with a first name and a last name and these are also sorted. I require > one alphabetical list rather than two. > > Can this be done in one fell swoop, without having to write an XSL style > sheet for the file consisting of two alphabetical sequences? How about (in XSLT 2.0): <xsl:sort select="if (contains(., ' ') then substring-after(., ' ') else ."/> <xsl:sort select="if (contains(., ' ') then substring-before(., ' ') else ''"/> -- Kevin Rodgers
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] a sorting conundrum, John Fitzgibbon | Thread | RE: [xsl] a sorting conundrum, Michael Kay |
RE: [xsl] xsl:template having both , Mukul Gandhi | Date | [xsl] XML to XML transformation and, c p |
Month |