Subject: RE: [xsl] Sorting on two booleans From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Thu, 26 Feb 2009 17:47:56 -0000 |
> I've got a document that looks like this: > <projects> > <project active="1" published="1">stuff</project> > <project active="1" published="0">stuff</project> > <project active="0" published="1">stuff</project> > <project active="0" published="0">stuff</project> </projects > > And I need to be able to sort them (on the fly - it's part of > a sortable table in html) in this order and the reverse: > active, not published > active, published > not active, published > not active, not published. So your major sort key is @active (true<false) and your minor sort key is @published (false<true). That's <xsl:for-each select...> <xsl:sort select="@active" data-type="number" order="descending"/> <xsl:sort select="@published" data-type="published" order="ascending"/> For the reverse order, flip all the order="" attributes. Michael Kay http://www.saxonica.com/ > > I've tried all kinds of ways to sort them to get this to > happen including brute force: > <xsl:for-each select="project"> > <xsl:sort select="@active=1 and @published=0" > order="ascending" > data-type="number"/> > <xsl:sort select="@active=1 and @published=1" > order="ascending" > data-type="number"/> > <xsl:sort select="@active=0 and @published=1" > order="ascending" > data-type="number"/> > <xsl:sort select="@active=0 and @published=0" > order="ascending" > data-type="number"/> > <xsl:copy-of select="."/> > </xsl:for-each> > > > Nothing works. It always comes out with at least one in the > wrong spot. > > Could someone point me in the right direction? Help me > understand what > I'm missing about how sort works? > > Thanks much in advance > Joelle
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Sorting on two booleans, Joelle Tegwen | Thread | Re: [xsl] Sorting on two booleans, Joelle Tegwen |
[xsl] Sorting on two booleans, Joelle Tegwen | Date | Re: [xsl] Sorting on two booleans, Joelle Tegwen |
Month |