2016-11-09 3 views
1

Я пытаюсь получить правильный формат отрицательного значения отображается:Форматирование отрицательных значений в 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.

Спасибо!

ответ

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

Бинго, нашел преступника!

Есть функция 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, чтобы заставить меня выглядеть сложнее!

Смежные вопросы