Subject: Re: [xsl] How to sort a $variable and store that into another $variable ? From: "Jean-Philippe Martin" <jeanph01@xxxxxxxxx> Date: Wed, 10 Dec 2008 14:05:24 -0500 |
Ok. I'll try to make this understandable. My need is : - extract a list of values - make it unique - make it sorted - put it on many columns in a html table My XML document is big. I create an unordered list of unique values with this call (the first // is important since the info can be anywhere in the xml tree) : <xsl:variable name="unsortedList" select="//category[@defid=3183315]//*[@attid=49]/node()[not(.=following::*)]" /> I put this list in a variable because i want to make a multi-column html table with the values. And the technique I used needs a variable <table style="width:100%; "> <xsl:variable name="unsortedList" select="//category[@defid=3183315]//*[@attid=49]/node()[not(.=following::*)]" /> <xsl:variable name="nbCol" select="ceiling(count($unsortedList) div 5)"/> <xsl:for-each select="($unsortedList)[position() <= $nbCol]"> <!--xsl:sort select="."/--> <xsl:variable name="here" select="position()"/> <tr> <xsl:call-template name="TDcompetence"> <xsl:with-param name="competence" select="$unsortedList[$here+$nbCol*0]"/> </xsl:call-template> <xsl:call-template name="TDcompetence"> <xsl:with-param name="competence" select="$unsortedList[$here+$nbCol*1]"/> </xsl:call-template> <xsl:call-template name="TDcompetence"> <xsl:with-param name="competence" select="$unsortedList[$here+$nbCol*2]"/> </xsl:call-template> <xsl:call-template name="TDcompetence"> <xsl:with-param name="competence" select="$unsortedList[$here+$nbCol*3]"/> </xsl:call-template> <xsl:call-template name="TDcompetence"> <xsl:with-param name="competence" select="$unsortedList[$here+$nbCol*4]"/> </xsl:call-template> </tr> </xsl:for-each> </table> The sort is in comments because it do not work since I access the value with a position into the $unsortedList variable directly and not through the for-each which could sort. Thank you. On Wed, Dec 10, 2008 at 13:30, Martin Honnen <Martin.Honnen@xxxxxx> wrote: > Jean-Philippe Martin wrote: > >> I'm trying to sort a <xsl:variable> containing 22 nodes and store this >> sorted list into another xsl:variable. >> >> Is this possible ? > > >> Is there a way to do this ? >> >> Ps: this is xsl 1.0. > > There is a way if you show us your XML input and how exactly you initialize > your first variable. > > Assuming the XML input document is > > <root> > <foo>10</foo> > <foo>2</foo> > <foo>1</foo> > <foo>4</foo> > </root> > > then this stylesheet > > <xsl:stylesheet > version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > <xsl:output indent="yes"/> > > <xsl:template match="/"> > <xsl:variable name="v1" select="root/foo"/> > <xsl:variable name="v2"> > <xsl:for-each select="$v1"> > <xsl:sort select="." data-type="number"/> > <xsl:copy-of select="."/> > </xsl:for-each> > </xsl:variable> > <result> > <xsl:copy-of select="$v2"/> > </result> > </xsl:template> > > </xsl:stylesheet> > > outputs > > <result> > <foo>1</foo> > <foo>2</foo> > <foo>4</foo> > <foo>10</foo> > </result> > > Variable v1 has the foo elements from the XML input, variable v2 a result > tree fragment of the sorted foo elements. > > -- > > Martin Honnen > http://JavaScript.FAQTs.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] How to sort a $variable a, Martin Honnen | Thread | Re: [xsl] How to sort a $variable a, Martin Honnen |
Re: [xsl] How to sort a $variable a, Martin Honnen | Date | [xsl] Calculating groups of repeati, Quinn Dombrowski |
Month |