format number after calculation : number format « XSLT stylesheet « XML Tutorial






File: Data.xml

<?xml version="1.0"?>
<catalog>
 <item id="SC-0001">
  <maker>A</maker>
  <description>B</description>
  <size>L</size>
  <price>120.00</price>
  <currency>USD</currency>
 </item>
</catalog>

File: Transform.xslt
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" />
  <xsl:output doctype-system="catalog.dtd" />
  <xsl:variable name="discount">0.70</xsl:variable>
  <xsl:variable name="discountPrice"
    select="format-number(catalog/item/price - (catalog/item/price) * $discount, '###.00')" />
  <xsl:template match="catalog">
    <xsl:copy>
      <xsl:apply-templates select="item" />
    </xsl:copy>
  </xsl:template>

  <xsl:template match="item">
    <xsl:copy>
      <xsl:copy-of select="@id" />
      <xsl:copy-of select="maker|description|size|price" />
      <discount>
        <xsl:value-of select="$discount" />
      </discount>
      <discountPrice>
        <xsl:value-of select="$discountPrice" />
      </discountPrice>
      <xsl:copy-of select="currency" />
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

Output:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE catalog
  SYSTEM "catalog.dtd">
<catalog>
   <item id="SC-0001">
      <maker>A</maker>
      <description>B</description>
      <size>L</size>
      <price>120.00</price>
      <discount>0.70</discount>
      <discountPrice>36.00</discountPrice>
      <currency>USD</currency>
   </item>
</catalog>








5.14.number format
5.14.1.format number after calculation
5.14.2.select=format-number(catalog/item/price * 0.60, ###.00)
5.14.3.format-number(999999999.9999, '#.###,##')
5.14.4.format-number(123456.9999, '#,###.##', 'us_default') : 123,457
5.14.5.format-number(number(1) div 0, '#.#')
5.14.6.format-number(number(1) div 0, '#.#', 'other_options')
5.14.7.format-number(number('blue') * number('orange'), '#')
5.14.8.format-number(number('blue') * number('orange'), '#', 'other_options')
5.14.9.format-number(42, '#!','hash_mark')
5.14.10.select=format-number($totalSales, ##,###)
5.14.11.format-number(1528.3, '#/###:00', 'f1')
5.14.12.format-number(1 div 0, '###,###.00', 'f2')
5.14.13.format-number(blue div orange, '#.##', 'f2')
5.14.14.formatting of multilevel numbers