Amrendra Kumar
Amrendra Kumar

Reputation: 1816

Format a number containing a decimal point with leading zeroes in XSLT 2.0

I am facing problem while printing a decimal value (0) with point. As per requirement leading (0) zero should be print:

XML: here all percent value is in 0.something.

<root>
    <rate final="280" percent="0.1921"/>
    <rate final="180" percent="0.18"/>
    <rate final="170" percent="0.17201"/>
    <rate final="70" percent="0.1"/>
</root>

XSLT: I am using this XSLT with format-number function because i need only two digits after dot (.).

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">

    <xsl:output indent="yes"/>

    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="rate">
        <rate>
            <xsl:apply-templates select="@*"/>
            <xsl:value-of select="concat('Final Percentage is : ', format-number(@percent, '#,###,###,###.00'),'%')"/>
        </rate>
    </xsl:template>

</xsl:stylesheet>

Desired OUTPUT: Result which i want with leading 0.

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <rate final="280" percent="0.1921">Final Percentage is : 0.19%</rate>
    <rate final="180" percent="0.18">Final Percentage is : 0.18%</rate>
    <rate final="170" percent="0.17201">Final Percentage is : 0.17%</rate>
    <rate final="70" percent="0.1">Final Percentage is : 0.10%</rate>
</root>

CURRENT OUTPUT: Current result i am getting with my XSLT

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <rate final="280" percent="0.1921">Final Percentage is : .19%</rate>
    <rate final="180" percent="0.18">Final Percentage is : .18%</rate>
    <rate final="170" percent="0.17201">Final Percentage is : .17%</rate>
    <rate final="70" percent="0.1">Final Percentage is : .10%</rate>
</root>

Upvotes: 1

Views: 2583

Answers (1)

Michael Kay
Michael Kay

Reputation: 163625

Answered by Martin Honnen in comments:

Change the second argument of the format-number call to 0.00 to indicate you need a leading zero.

Upvotes: 0

Related Questions