Define parameter : parameter « XSLT stylesheet « XML Tutorial






File: Data.xml
<?xml version="1.0"?>
<!DOCTYPE catalog SYSTEM "price.dtd">

<catalog>
 <item id="SC-0001">
  <maker>A</maker>
  <description>W</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:param 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"?>
<!DOCTYPE catalog
  SYSTEM "catalog.dtd">
<catalog>
   <item id="SC-0001">
      <maker>A</maker>
      <description>W</description>
      <size>L</size>
      <price>120.00</price>
      <discount>0.1</discount>
      <discountPrice>108</discountPrice>
      <currency>USD</currency>
   </item>
</catalog>








5.69.parameter
5.69.1.Define parameter
5.69.2.template with parameter
5.69.3.Variable and parameter
5.69.4.setting xsl:param
5.69.5.A way how to recover the value of global variable which has the same name as a local one
5.69.6.If you want to pass a variable, you have to define this variable with xsl:param element.