[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Text Sort Problem


Subject: Re: [xsl] Text Sort Problem
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Sat, 10 Sep 2005 18:51:02 +1000

What about this: ?


<xsl:stylesheet version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 xmlns:f="http://fxsl.sf.net/"
 exclude-result-prefixes="f xs"
 >
  <xsl:output omit-xml-declaration="yes" indent="yes"/>
  <xsl:strip-space elements="*"/>

	<xsl:template match="t">
		<xsl:for-each select="row[normalize-space(pb_number)]">
			<xsl:sort select="normalize-space(pb_number)"/>
			<xsl:copy-of select="."/>
		</xsl:for-each>
		<xsl:copy-of select="row[not(normalize-space(pb_number))]"/>
	</xsl:template>
</xsl:stylesheet>


The above transformation applied on this source xml:

<t>
	<row>
		<pb_number></pb_number>
	</row>
	<row/>
	<row>
		<pb_number>xxyy123</pb_number>
	</row>
	<row>
		<pb_number>xxzz111</pb_number>
	</row>
	<row>
		<pb_number>xxyy124</pb_number>
	</row>
</t>

results in:

<row>
   <pb_number>xxyy123</pb_number>
</row>
<row>
   <pb_number>xxyy124</pb_number>
</row>
<row>
   <pb_number>xxzz111</pb_number>
</row>
<row>
   <pb_number/>
</row>
<row/>


Cheers,
Dimitre Novatchev



On 9/10/05, KrustyDerClown <KrustyDerClown@xxxxxx> wrote:
> Hello,
>
> sorry for the late answer. My problem is not solved. Maybe i am too stupid.
>
> There is also a little change in my problem. I sort not with
> data-type=number, but with the data-typ=text.
>
> My code looks like this: (pb_number is not really a number. Its a number
> with a prefix like PB9999, therefore the sort with data-typ=text)
>
> <xsl:for-each select="row">
> <xsl:sort select="boolean(pb_number)" order="descending"/>
> <xsl:sort select="pb_number" data-type="text"/>
> <tr>
> <td>
> <xsl:value-of select="string"/>
>
> Result:
>
> Entries with empty sequenz
> CR90
> CR99
> PR90
>
> So still the problem is that the entries with an empty sequenz as pb_number
> are shown first in the table.
>
> Can anyone help again ?
>
> Thank you for your support.
>
> Greets Oliver
>
> ----- Original Message -----
> From: "David Carlisle" <davidc@xxxxxxxxx>
> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> Sent: Thursday, August 25, 2005 12:25 AM
> Subject: Re: [xsl] Text Sort Problem
>
>
> >
> >> I have a similar problem (with data-type=number) a short time ago ...
but
> >> the solution at that time doesnt work here for this current problem.
> >
> > the solution I posted (negating the sort key) doesn't work for non
> > numeric keys, but the solution Mike posted (which was probably more
> > sensible anyway) does work here. Just have an initial xsl:sort that is
> > select="boolean(my_text)"
> > as that will sort everything as either "true" or "false" depending on
> > whether my_text selects any nodes. so you can then specify ascending or
> > descending to control whether the empty case ("false") sorts before or
> > after the non-empty case ("true")
> >
> > David
> >
> > ________________________________________________________________________
> > This e-mail has been scanned for all viruses by Star. The
> > service is powered by MessageLabs. For more information on a proactive
> > anti-virus service working around the clock, around the globe, visit:
> > http://www.star.net.uk
> > ________________________________________________________________________
>
>


--
Cheers,
Dimitre Novatchev
---------------------------------------
Harry did not ask how Dumbledore knew; ...but Harry had long since
learned that bangs and smoke were more often the marks of ineptitude
than expertise.


Current Thread