Subject: RE: [xsl] a sorting conundrum From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Thu, 3 Mar 2005 15:52:12 -0000 |
As is so often the case, it's easy in 2.0: <xsl:sort select="if (contains(., ' ')) then substring-after(., ' ') else string(.)"/> The only workaround I can think of for 1.0 is the "infinite-substring" hack. This relies on the fact that if B is a boolean expression, then substring(X, 1 div B, string-length(X)) returns [if (B) then X else ""] So you get something like select="concat( substring(., 1 div (not(contains(., ' ')), string-length(X), substring(substring-after(., ' '), 1 div contains(., ' '), string-length(X)))"/> Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: John Fitzgibbon [mailto:jfitzgibbon@xxxxxxxxxxxxxxxx] > Sent: 03 March 2005 15:32 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] a sorting conundrum > > Hi, > > 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? > > Any suggestions would be most welcome. > > Regards > John > > John Fitzgibbon > > Galway Public Library > Island House > Cathedral Square > Galway > Ireland > > p: 00 353 91 562471 > f: 00 353 91 565039 > w: http://www.galwaylibrary.ie > > ******************************************************************* > Ta eolas ata prmobhaideach agus rznda sa rmomhphost seo > agus aon iatan a ghabhann leis agus is leis an duine/na daoine > sin amhain a bhfuil siad seolta chucu a bhaineann siad. > Mura seolam thz, nml tz zdaraithe an rmomhphost ns aon iatan > a ghabhann leis a liamh, a chsipail na a zsaid. > Ma ta an rmomhphost seo faighte agat trm dhearmad, > cuir an seoltsir ar an eolas thrm aischur rmomhphoist > agus scrios ansin i le do thoil. > > This e-mail and any attachment contains information which is > private and confidential and is intended for the addressee > only. If you are not an addressee, you are not authorised > to read, copy or use the e-mail or any attachment. > If you have received this e-mail in error, please notify > the sender by return e-mail and then destroy it. > *********************************************************************
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] a sorting conundrum, Kevin Rodgers | Thread | Re: [xsl] a sorting conundrum, JBryant |
[xsl] XML to XML transformation and, c p | Date | RE: [xsl] XML to XML transformation, Michael Kay |
Month |