xsl-list
[Top] [All Lists]

Re: a sorting conundrum

2005-03-03 08:43:50
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[(_at_)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


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>