This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: SUMMARY: Re: Sorting on a variable
- To: xsl-list at mulberrytech dot com
- Subject: Re: SUMMARY: Re: Sorting on a variable
- From: David Carlisle <davidc at nag dot co dot uk>
- Date: Tue, 17 Oct 2000 11:26:43 GMT
- References: <4.3.2.7.2.20001016182941.00c51690@nexus.polaris.net>
- Reply-To: xsl-list at mulberrytech dot com
> The general solution I'm using is to clone the source tree, adding to it
> for each product a new child element containing the calculated value
> (USD-equivalent currency figures, in this case). This clone (an RTF,
> converted to a node-set using your favorite processor's node-set()
> extension function) then gets sorted on the created element. Works like a
> champ. (Sample code below.)
Although actually in this example you can do it without need for
extension namespaces (or variables). Just sort on a suitably constructed
xpath. Something not unlike this
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:template match="/">
<html>
<head><title>Sorting an RTF</title></head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<!-- Template rule for root element <products> -->
<xsl:template match="products">
<table border="1">
<tr>
<th>Name/Version</th>
<th>Price / Curr</th>
<th>Price (USD)</th>
</tr>
<xsl:apply-templates select="product">
<xsl:sort select="
concat('0',price[@curr='USD']) +
concat('0',price[@curr='GBP']) *1.47275 +
concat('0',price[@curr='EU']) * 0.864379 "
data-type="number" />
</xsl:apply-templates>
</table>
</xsl:template>
<xsl:template match="product">
<tr>
<td valign="top"><xsl:value-of select="name"/></td>
<td align="right">
<xsl:value-of select="price"/> / <xsl:value-of select="price/@curr"/>
</td>
<td align="right"><xsl:value-of select="
format-number(
concat('0',price[@curr='USD']) +
concat('0',price[@curr='GBP']) *1.47275 +
concat('0',price[@curr='EU']) * 0.864379 ,
'#,##0.00')
"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list