Subject: RE: [xsl] Sorting Two Dimensional Table From: "Pierre-Luc Bertrand" <Pierre-Luc.Bertrand@xxxxxxxxxx> Date: Mon, 15 Oct 2007 12:22:56 -0400 |
Hi, I don't think that this solution is what I'm looking for after trying it a bit. It seems here that you are sorting on key name and then on key value but this is not what I want to do. First I'm sorting my key name for presenting as titles in my table: a b c value Then I need to sort the data accordingly. Here the data has keys and value pair. The keys are presented as follow: the name of the key is to put it under the right column and the value of it is to show that value in the column. So something like this: <titles> <key>z</key> <key>a</key> <value>valueX</value> </titles> Would result as table title as follow: a z valueX Then entries as follow: <entries> <entry> <key name="a" value="b" /> <key name="z" value="c" /> <value>myValue1</value> </entry> <entry> <key name="a" value="b" /> <key name="z" value="d" /> <value>5</value> </entry> <entry> <key name="a" value="a" /> <key name="z" value="c" /> <value>myValue3</value> </entry> <entry> <key name="a" value="b" /> <key name="z" value="d" /> <value>4</value> </entry> </entries> Would be presented as follow: a z valueX ------------ a c myValue3 (because 'a' goes before 'b' in column 'a') b c myValue1 (because 'b' goes after 'a' in column 'a' but 'c' goes before 'd' in column 'z') b d 4 (because 'b' goes after 'a' in column 'a' and 'd' goes after 'c' in column 'z' and '4' goes before '5' in column 'valueX') b d 5 (because 'b' goes after 'a' in column 'a' and 'd' goes after 'c' in column 'z' but '5' goes after '4' in column 'valueX') So what is required is a sort on the title name on a single row and then show the value and a global sort on the data based first on column titled a, then on z (because we sort keys first) and then on column x (because it is the value). In pseudo code, it would look like this: for each titles keyNameSorted := sort key alphabetically print keys print value end for each titles for each i in keyNameSorted sort the data based on keyNameSorted[i]'s value end for each I in keyNameSorted for each entry for each i in keyNameSorted print value associated to key named keyNameSorted[i] end for each I in keyNameSorted print value end for each entry Thanks a lot for your time Pierre. -----Original Message----- From: Scott Trenda [mailto:Scott.Trenda@xxxxxxxx] Sent: Monday, October 15, 2007 10:56 AM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: RE: [xsl] Sorting Two Dimensional Table Pierre, Remember that you can use multiple <xsl:sort/> statements together. Try something like this: <xsl:template match="entry"> <xsl:apply-templates select="key"> <xsl:sort select="@name"/> <xsl:sort select="@value"/> </xsl:apply-templates> <xsl:apply-templates select="value"/> </xsl:template> ~ Scott -----Original Message----- From: Pierre-Luc Bertrand [mailto:Pierre-Luc.Bertrand@xxxxxxxxxx] Sent: Monday, October 15, 2007 9:41 AM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: RE: [xsl] Sorting Two Dimensional Table Thanks Scott, Hotmail is great !! Again, Hi, I'm desperately trying to sort a two dimension table. I have keys and values. I want to be able to sort by keys and then by value. This is not a problem so far. The problem comes when I try to sort the keys that I want to be sorted as well. Example: x y value a a a a b a a a b a b b a a c b b a b a b b b b b a d which is presented as follow: <table> <titles> <key>a</key> <key>b</key> <value>halo_name</value> </titles> <entries> <entry> <key name="b" value="a" /> <key name="a" value="b" /> <value>d</value> </entry> <entry> <key name="a" value="a" /> <key name="b" value="a" /> <value>c</value> </entry> <entry> <key name="a" value="a" /> <key name="b" value="a" /> <value>b</value> </entry> <entry> <key name="a" value="a" /> <key name="b" value="b" /> <value>b</value> </entry> <entry> <key name="a" value="b" /> <key name="b" value="a" /> <value>b</value> </entry> <entry> <key name="a" value="a" /> <key name="b" value="a" /> <value>a</value> </entry> <entry> <key name="a" value="b" /> <key name="b" value="b" /> <value>a</value> </entry> <entry> <key name="a" value="a" /> <key name="b" value="b" /> <value>a</value> </entry> <entry> <key name="a" value="b" /> <key name="b" value="b" /> <value>b</value> </entry> </entries> </table> Th problem is that I don't know the keys beforhand neither how many of them I have. So to show the title of my table, I use something like that: <xsl:for-each select="titles/key"> <xsl:sort select="." /> <th bgcolor="#9acd32" align="left"><xsl:value-of select="." /></th> </xsl:for-each> <th bgcolor="cornflowerblue" align="left"><xsl:value-of select="titles/value" /></th> So that I know that my key titles are always sorted and then I put the data in the same fashion <xsl:for-each select="entries/entry"> <tr> <xsl:for-each select="key"> <xsl:sort select="@name" /> <td align="left"><xsl:value-of select="@value" /></td> </xsl:for-each> <td align="left"><xsl:value-of select="value" /></td> </tr> </xsl:for-each> So I'd like to sort my keys and then sort the data accordingly so that visually the first column is sorted first and the second column second... Help ! Thank you very much. PL > Date: Mon, 15 Oct 2007 09:15:58 -0500 > From: Scott.Trenda@xxxxxxxx > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: RE: [xsl] Sorting Two Dimensional Table > > Hey PL, > > Try sending that again? It looks like your examples got nerfed when you > sent it. > > > ~ Scott > > > -----Original Message----- > From: P L [mailto:happytchoum@xxxxxxxxxxx] > Sent: Monday, October 15, 2007 9:10 AM > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] Sorting Two Dimensional Table > > > Hi, > > I'm desperately trying to sort a two dimension table. > > I have keys and values. I want to be able to sort by keys and then by > value. This is not a problem so far. The problem comes when I try to > sort the keys that I want to be sorted as well. > > Example: > > x y value > > a a a > a b a > a a b > a b b > a a c > b b a > b a b > b b b > b a d > > which is presented as follow: > > > > a > b > halo_name > > > > > > > d > > > > > c > > > > > b > > > > > b > > > > > b > > > > > a > > > > > a > > > > > a > > > > > b > > > > > Th problem is that I don't know the keys beforhand neither how many of > them I have. So to show the title of my table, I use something like > that: > > > > > > > > > > > > > > So that I know that my key titles are always sorted and then I put the > data in the same fashion > > > > > > > > > > > > > > > > > > > > > > So I'd like to sort my keys and then sort the data accordingly so that > visually the first column is sorted first and the second column > second... > > Help ! > > Thank you very much. > > PL > > _________________________________________________________________ > Envoie un sourire, fais rire, amuse-toi! Employez-le maintenant! > http://www.emoticonesgratuites.ca/?icid=EMFRCA120 > ________________________________________ Envoie un sourire, fais rire, amuse-toi! Employez-le maintenant!
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Sorting Two Dimensional T, Scott Trenda | Thread | Re: [xsl] Sorting Two Dimensional T, David Carlisle |
Re: [xsl] Wrapping two different el, George Cristian Bina | Date | Re: [xsl] Sorting Two Dimensional T, David Carlisle |
Month |