While using XSL I came across the need to perform a calculation by converting metres to some other units, and then formatting the output.
number() takes the value of the selected node and treats it as an actual number. number() div 1000 is my actual calculation to convert metres to kilometres. Notice that I am using the keyword div and not the / operator as you would with other languages such as Javascript:
Being all nice and outputting my desired output, this is flawed. When it comes to outputting in other units such as miles and yards, it shows a large nasty decimal number. It's far too accurate and long that it's not really user friendly.
A simple presentation would be to limit the output to 2 decimal places. The answer to this is to use the format-number() function.
This was all achieved in this one-liner:
For more information of the XSL format-number() function, visit w3schools.
number() takes the value of the selected node and treats it as an actual number. number() div 1000 is my actual calculation to convert metres to kilometres. Notice that I am using the keyword div and not the / operator as you would with other languages such as Javascript:
<xsl:value-of select="number() div 1000"/> km
Being all nice and outputting my desired output, this is flawed. When it comes to outputting in other units such as miles and yards, it shows a large nasty decimal number. It's far too accurate and long that it's not really user friendly.
A simple presentation would be to limit the output to 2 decimal places. The answer to this is to use the format-number() function.
This was all achieved in this one-liner:
<xsl:value-of select="format-number(number() div 1000,'#0.00')"/> km
For more information of the XSL format-number() function, visit w3schools.
Blogged with Flock
Comments