在XSLT中格式化负值

时间:2016-11-09 18:01:22

标签: xml xslt

我正在尝试显示正确的负值格式:

现在显示(19%),当我想将其显示为-19%时。

我有一个带

的XML文件

<PerChg>-0.190</PerChg>

在XSL中格式化它不起作用:

<xsl:value-of select="format-number(PerChg, '#0%')"/>
<xsl:value-of select="format-number(PerChg, '#0%;-#0%')"/>

甚至尝试过:

<xsl:decimal-format name="decimalChangePercent" minus-sign="-" />
<xsl:value-of select="format-number(PerChg, '#0%;-#0%', 'decimalChangePercent')"/>

有什么想法吗?在.NET世界中,使用XslCompiledTransform / XSLT 1.0。

谢谢!

2 个答案:

答案 0 :(得分:3)

没有看到问题...

此输入XML文件

<PerChg>-0.190</PerChg>

提供给此XSLT,

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="text"/>

  <xsl:template match="/">
    <xsl:value-of select="format-number(PerChg, '#0%')"/>
  </xsl:template>

</xsl:stylesheet>

产生此输出,

-19%

正如所料。

答案 1 :(得分:1)

宾果,找到了罪魁祸首!

有一个JavaScript函数可以将所有负值转换为括号。

function MakeNegative() {
                TDs = document.getElementsByTagName('td');
                for (var i = 0; i < TDs.length; i++) {
                    var temp = TDs[i];
                    if (temp.firstChild && temp.firstChild.nodeValue) { // if not null
                        if (temp.firstChild.nodeValue.indexOf('-') == 0) {
                            temp.className += " negative";
                            temp.firstChild.nodeValue = '(' + temp.firstChild.nodeValue.replace('-', '') + ')';
                        }
                    }
                }
            };

感谢你的确认@kjhughes让我看起来更难!