Potřebujete pomoci s XSLT?
Nabízím školení, konzultace, vývoj XSLT kódu na zakázku. Nevájte a kontaktujte mne.

Podpořte provoz stránek
Platba probíhá pomocí služby PayPal a je možné platit kartou nebo převodem z vašeho PayPal účtu.

5.3 Předávání parametrů

Šabloně, která má uvnitř sebe definované nějaké parametry, můžeme předat hodnotu těchto parametrů pomocí instrukce <xsl:with-param>. U ní používáme atributy name a select (resp. její obsah) k nastavení hodnoty parametru obdobně jako v <xsl:param>. Instrukce se použije uvnitř instrukce <xsl:apply-templates>. Ta je do jisté míry podobná volání funkce se zadáním parametrů. Vše ilustruje následující příklad.

Příklad 5.2. Využití parametrů – parametry1.xsl

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

<xsl:output method="html" encoding="utf-8"/>

<xsl:template match="/">
  <html>
    <head>
      <title>Katalog <xsl:value-of select="katalog/info/firma"/></title>
    </head>
    <body>
      <h1>Katalog <xsl:value-of select="katalog/info/firma"/></h1>
      
      <table width="100%" border="1">
        <xsl:apply-templates select="//polozka"/>
      </table>
    </body>
  </html>
</xsl:template>

<xsl:template match="polozka">
  <tr>
    <xsl:apply-templates select="nazev|kategorie|cena">
      <xsl:with-param name="barva" select="'silver'"/>
    </xsl:apply-templates>
  </tr>
</xsl:template>

<xsl:template match="nazev">
  <xsl:param name="barva" select="'white'"/>
  <th bgcolor="{$barva}"><xsl:apply-templates/></th>
</xsl:template>

<xsl:template match="kategorie">
  <xsl:param name="barva" select="'white'"/>
  <td align="center" bgcolor="{$barva}"><xsl:apply-templates/></td>
</xsl:template>

<xsl:template match="cena">
  <xsl:param name="barva" select="'white'"/>
  <td align="right" bgcolor="{$barva}"><xsl:apply-templates/></td>
</xsl:template>

</xsl:stylesheet>

Globální parametr se definuje na nejvyšší úrovni stylu stejně jako šablony. Lze jej pak použít v libovolné šabloně a jeho hodnotu můžeme měnit z vnějšku při spouštění transformace.

Příklad 5.3. Globální parametr – parametry3.xsl

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

<xsl:output method="html" encoding="utf-8"/>

<!-- Globální parametr, který lze měnit při spouštění transformace -->
<xsl:param name="barva" select="'white'"/>

<xsl:template match="/">
  <html>
    <head>
      <title>Katalog <xsl:value-of select="katalog/info/firma"/></title>
    </head>
    <body>
      <h1>Katalog <xsl:value-of select="katalog/info/firma"/></h1>
      
      <table width="100%" border="1">
        <xsl:apply-templates select="//polozka"/>
      </table>
    </body>
  </html>
</xsl:template>

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

<xsl:template match="nazev">
  <th bgcolor="{$barva}"><xsl:apply-templates/></th>
</xsl:template>

<xsl:template match="kategorie">
  <td align="center" bgcolor="{$barva}"><xsl:apply-templates/></td>
</xsl:template>

<xsl:template match="cena">
  <td align="right" bgcolor="{$barva}"><xsl:apply-templates/></td>
</xsl:template>

</xsl:stylesheet>

© Jiří Kosek 2014

Tento dokument je určen výhradně pro osobní potřebu seznámení s jazykem XSLT. Jakékoliv jiné použití, včetně dalšího šíření, pořizování kopií, použití při školeních a výuce apod. je výslovně zakázáno a bude považováno za porušení autorských práv.


Copyright © 2000-2014 Jiří Kosek