|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Dynamically controlling sort order based on values in
I have some xml that looks like :
<DISPLAY>
<CONFIG>
<COL>
<ID>ColA</ID>
<ORDERBY DIRECTION="ASC">1</ORDERBY>
</COL>
<COL>
<ID>ColB</ID>
<ORDERBY DIRECTION="DSC">2</ORDERBY>
</COL>
</CONFIG>
<DATA>
<ROW>
<COL ID="ColA">
<VALUE>BBB</VALUE>
</COL>
<COL ID="ColB">
<VALUE>111</VALUE>
</COL>
</ROW>
<ROW>
<COL ID="ColA">
<VALUE>CCC</VALUE>
</COL>
<COL ID="ColB">
<VALUE>333</VALUE>
</COL>
</ROW>
<ROW>
<COL ID="ColA">
<VALUE>AAA</VALUE>
</COL>
<COL ID="ColB">
<VALUE>222</VALUE>
</COL>
</ROW>
</DATA>
</DISPLAY>
I have a stylesheet that outputs the data sorted by the element in CONFIG
where COL/ORDERBY/text() is 1, which looks like :
<xsl:template match="DISPLAY">
<xsl:variable name="sort_col"
select="CONFIG/COL[ORDERBY/text()='1']/ID/text()" />
<xsl:apply-templates select="DATA/ROW" mode="do_data">
<xsl:sort select="COL[@ID=$sort_col]/VALUE/text()" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="ROW" mode="do_data">
<xsl:value-of select="COL[@ID='ColA']/VALUE/text()" />, <xsl:value-of
select="COL[@ID='ColB']/VALUE/text()" />
<br />
</xsl:template>
This gives me :
AAA, 222
BBB, 111
CCC, 333
I need to be able to sort the data based on the CONFIG element of the XML
and I don't know ahead of time how many columns there are going to be in the
dataset and how many of them I will need to sort by.
Can anyone suggest a way to achive this ?
Thanks
Steve
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








