On 8/7/07, Mark Anderson <mark(_dot_)anderson(_at_)technique-group(_dot_)com>
wrote:
Hi All
You guys helped me out with avoiding empty elements when summing
Sum(my_node[text()])
Works fantastically, but I'm still plagued by 'NaN' in my output. This
time it's caused by:
format-number(discount, '$#,.00')
If I have <discount/> in my XML I want to display $0.00 in the output;
however, when discount is an empty element, I get NaN
The only way I can think of to get around it is something like:
<xsl:choose>
<xsl:when test="string(number(discount))='NaN'">
Discount: <xsl:value-of select="format-number(0,
$currencyformat)"/>
</xsl:when>
<xsl:otherwise>
Discount: <xsl:value-of select="format-number(discount,
$currencyformat)"/>
</xsl:otherwise>
</xsl:choose>
Seem awfully long-winded. Anyone got any ideas?
Sometimes XSLT 1.0 is awfully long winded...
However you could do:
<xsl:text>Discount: </xsl:text>
<xsl:apply-templates select="discount"/>
<xsl:template match="discount[number(.)]">
<xsl:value-of select="format-number(., $currencyFormat)"/>
</xsl:template>
<xsl:template match="discount[not(number(.))]">
<xsl:value-of select="format-number(0, $currencyFormat)"/>
</xsl:template>
It's the same amount of code, but perhaps structured a little better.
If XSLT 2.0 it's just:
format-number((.[number(.)],'0')[1], $currencyFormat)
which is nice :)
--
http://andrewjwelch.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>
--~--