Š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/> Kč</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/> Kč</td> </xsl:template> </xsl:stylesheet>