Calculate with variable : Math « XSLT stylesheet « XML Tutorial






File: Data.xml
<?xml version="1.0"?>

<catalog>
 <item id="0001">
  <maker>factory</maker>
  <description>device</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:variable name="discount" select="0.10" />

  <xsl:template match="catalog">
    <xsl:copy>
      <xsl:apply-templates select="item" />
    </xsl:copy>
  </xsl:template>

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

</xsl:stylesheet>
Output:

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
   <item id="0001">
      <maker>factory</maker>
      <description>device</description>
      <size>L</size>
      <price>120.00</price>
      <discount>0.1</discount>
      <discountPrice>108</discountPrice>
      <currency>USD</currency>
   </item>
</catalog>








5.8.Math
5.8.1.Do calculation in select: 4 + 3.2
5.8.2.Do calculation in select: 3.2 - 4
5.8.3.Do calculation in select: 4 * 3.2 (multiply)
5.8.4.Do calculation in select: 11/3.2 (div)
5.8.5.Do calculation in select: 4 + 3.2 * 11
5.8.6.Add string and integer together
5.8.7.Math calculation
5.8.8.Calculate with variable
5.8.9.Output calculated value
5.8.10.Tests of XPath multiplication in XPath 1.0
5.8.11.Tests of XPath multiplication in XPath 2.0
5.8.12.Tests of XPath subtraction in XPath 1.0
5.8.13.Tests of XPath subtraction in XPath 2.0
5.8.14.An example of the unary minus
5.8.15.An example of the unary plus
5.8.16.subtraction and multiplication uses common syntax