nejprve si musíme dobře rozmyslet, jakou strukturu má výstupní dokument;
je věcí stylu, aby vygeneroval veškerý potřebný výstup:
velké množství samostatných šablon – struktura vstupního a výstupního dokumentu je podobná;
méně šablon a ruční průchod pomocí <xsl:for-each>
– struktura
výstupu se liší od vstupní;
většinou lze použít iterativní přístup – nejprve se vytvoří šablony pro elementy na vyšší úrovni hierarchie a postupně se dolaďují detaily;
již na začátku je dobré se zamyslet nad:
možností parametrizace stylu;
rozdělení do několika samostatných souborů.
Následující příklad ukazuje, jak lze například parametrizovat styl tak, aby mohl uživatel zvnějšku ovlivnit kritéria použitá pro řezení.
Příklad 10.1. Parametrizace řazení údajů pomocí parametru – katalog-razeni.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"/> <!-- 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> <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"> <xsl:sort select="*[local-name() = $raditPodle]" data-type="{$typ}"/> </xsl:apply-templates> </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><xsl:apply-templates/></th> </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/> Kč</td> </xsl:template> </xsl:stylesheet>