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.