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.

Kapitola 10. Pár tipů pro návrh stylů

10.1. Jak postupovat při návrhu
10.2. Optimalizace stylu

10.1 Jak postupovat při návrhu

  • 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/></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