Subject: RE: 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: 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.
> *********************************************************************
|