v praxi často potřebujeme jednotlivé části dokumentu XML zpracovat několikrát různými způsoby
pro jeden uzel můžeme mít více šablon odlišených pomocí režimu
<xsl:template match="…" mode="režim
">
při volání šablon můžeme určit režim, v jakém se mají šablony hledat
<xsl:apply-templates mode="režim
"/>
speciální názvy režimů – #all
(vyhoví všem
režimům), #default
(výchozí režim, tj. žádný),
#current
(režim právě prováděné šablony)
Příklad 8. katalog-rezimy.xsl
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.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="/katalog/polozka"/> </table> <xsl:apply-templates select="/katalog/polozka" mode="detailni"/> </body> </html> </xsl:template> <xsl:template match="polozka"> <tr> <xsl:apply-templates select="nazev|kategorie|cena"/> </tr> </xsl:template> <xsl:template match="nazev"> <th><xsl:apply-templates/></th> </xsl:template> <xsl:template match="kategorie"> <td align="right"><xsl:apply-templates/></td> </xsl:template> <xsl:template match="cena"> <td align="right"><xsl:apply-templates/> Kč</td> </xsl:template> <xsl:template match="polozka" mode="detailni"> <xsl:apply-templates mode="detailni"/> <hr/> </xsl:template> <xsl:template match="nazev" mode="detailni"> <h2><xsl:apply-templates mode="detailni"/></h2> </xsl:template> <xsl:template match="kategorie" mode="detailni"> <em><xsl:apply-templates mode="detailni"/></em> </xsl:template> <xsl:template match="cena" mode="detailni"> <strong> - <xsl:apply-templates mode="detailni"/> Kč</strong> </xsl:template> <xsl:template match="popis" mode="detailni"> <p><xsl:apply-templates mode="detailni"/></p> </xsl:template> <xsl:template match="br" mode="detailni"> <br/> </xsl:template> </xsl:stylesheet>