|
Subject: Re: [xsl] Re: Format Number and Empy Elements From: "Abel Braaksma (online)" <abel.online@xxxxxxxxx> Date: Wed, 8 Aug 2007 21:49:32 +0200 (CEST) |
> Hi Guys
>
> I still have a few problems with this. Here's my sample XML
>
>
> RESULTS
>
> concat('0', value) works brilliantly, except when there are negative
> numbers (as I get '0-100'). There's always a catch
make it concat('0 ', value) and it will work.
>
> Strangely, sum(value[.]) still gave NaN for Element A
>
Yes, I was not correct. If a node does not exist, sum(value[.]) will not raise
an error, it will return zero. If a node exists, but has no value, you can do
sum(value[number(.)]). That also works if the node has non-numeric values
(meaning: it will give a sum of zero if the values are non-numeric).
> <xsl:for-each select="number">
Just out of curiosity, but why do you use for-each here? Using apply-templates
would work as well and is more adaptive to changes.
> <xsl:value-of
> select="format-number(number(concat('0', value)), '#,.00')"/></td>
It's a matter of design of course, but if you want this less nested and
(again) more adaptive to change, you can also code it like:
<td>
<xsl:apply-templates select="number" />
</td>
and:
<xsl:template match="number">
<xsl:value-of select="..." />
</xsl:template>
or, if you prefer (and that removes the whole issue of NaN):
<xsl:template match="number" priority="0">0.00</xsl:template>
<xsl:template match="number[number(.)]">
<xsl:value-of select="format-number(., '#,.00')" />
</xsl:template>
but to design it like that is of course largely a matter of taste ;)
Cheers,
-- Abel Braaksma
PS: not tested ;)
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Re: Format Number and Emp, Florent Georges | Thread | [xsl] Adding a class to HTML's clas, Kai Weber |
| RE: [xsl] Adding a class to HTML's , Kai Weber | Date | [xsl] numbering nodes in result tre, Angela Williams |
| Month |