Předávání parametrů

  • jednotlivé šablony i celý styl mohou mít deklarovány parametry

  • při volání šablony nebo stylu lze parametrům předávat hodnoty

  • parametry lze předávat přes příkazovou řádku, API, funkci XSLT IDE, …

Příklad 18. katalog-parametry.xsl

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="2.0">

<!-- Podle jakého elementu se má výsledek seřadit -->
<xsl:param name="raditPodle">cena</xsl:param>

<!-- Datový typ položky, podle které se řadí -->
<xsl:param name="typ">number</xsl:param>

<!-- Směr řazení dat (vzestupně/sestupně) -->
<xsl:param name="smer">ascending</xsl:param>
  
<xsl:template match="/">
  <html>
    <head>
      <title><xsl:value-of select="/katalog/nazev"/></title>
      <style type="text/css">
        body { color: black; background-color: white; }
        table { border: solid 2px black; border-collapse: collapse; }
        th a { text-decoration: none; color: black; }
        th   { background-color: #FF8000; }
        th, td { border: solid 1px black; }
      </style>
    </head>
    <body>
      <h1><xsl:value-of select="/katalog/nazev"/></h1>
  
      <table width="100%">
        <tr>
          <th>Název</th>
          <th>Kategorie</th>
          <th>Cena</th>
        </tr>  
        <!-- Před zpracováním jsou položky seřazeny
             pole vybraných kritétií -->
        <xsl:apply-templates select="//polozka">
          <xsl:sort select="*[local-name() = $raditPodle]" 
                    data-type="{$typ}" order="{$smer}"/>
        </xsl:apply-templates>
      </table>
    </body>
  </html>    
</xsl:template>

<xsl:template match="polozka">
  <tr>
    <xsl:apply-templates select="nazev"/>
    <xsl:apply-templates select="kategorie"/>
    <xsl:apply-templates select="cena"/>
  </tr>
</xsl:template>

<xsl:template match="nazev">
  <td align="center"><xsl:apply-templates/></td>
</xsl:template>

<xsl:template match="kategorie">
  <td align="center"><xsl:apply-templates/></td>
</xsl:template>

<xsl:template match="cena">
  <td align="right"><xsl:apply-templates/></td>
</xsl:template>

</xsl:stylesheet>