[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Format Number and Empy Elements
On 8/7/07, Mark Anderson <mark.anderson@xxxxxxxxxxxxxxxxxxx> 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
|
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
|