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(_dot_)Trenda(_at_)oati(_dot_)net]
Sent: Monday, October 15, 2007 10:56 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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(_dot_)Bertrand(_at_)nuance(_dot_)com]
Sent: Monday, October 15, 2007 9:41 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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(_dot_)Trenda(_at_)oati(_dot_)net
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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(_at_)hotmail(_dot_)com]
Sent: Monday, October 15, 2007 9:10 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
________________________________________
Envoie un sourire, fais rire, amuse-toi! Employez-le maintenant!
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--