Zßkladem ka₧dΘho stylu jsou Üablony. Jejich zßkladnφ tvar je:
<xsl:template match="v²raz"> t∞lo Üablony </xsl:template>
T∞lo Üablony p°itom p°esn∞ definuje, jak se Φßsti transformovanΘho dokumentu vyhovujφcφ v²razu budou zpracovßvat. V t∞le Üablony m∙₧eme pou₧φvat dalÜφ konstrukce XSLT nebo p°φmo elementy z v²slednΘho dokumentu û nejΦast∞ji tedy HTML tagy, proto₧e generujeme HTML k≤d.
Mezi dva nejpou₧φvan∞jÜφ p°φkazy, kterΘ se pou₧φvajφ uvnit° Üablony, pat°φ value-of a apply-templates. Abychom pochopili k Φemu se majφ pou₧φvat a jak² je mezi rozdφl, musφme nejprve v∞d∞t, v jakΘm po°adφ se zpracovßvajφ jednotlivΘ Üablony.
XSLT procesor na zaΦßtku svΘ prßce naΦte do pam∞ti vstupnφ XML dokument a vytvo°φ si jeho stromovou reprezentaci (obrßzek 3). Tento strom je pak postupn∞ prochßzen od ko°ene v po°adφ v jakΘm jsou elementy obsa₧eny v dokumentu (jednß se tedy o pr∙chod do hloubky). V okam₧iku, kdy je nalezena Üablona odpovφdajφcφ uzlu ve stromu, zaΦne se jejφ obsah zapisovat na v²stup. D∙le₧itΘ je, ₧e dalÜφ potomci uzlu, pro kter² byla vybrßna Üablona, u₧ nejsou dßl automaticky zpracovßvßni. Pokud tak chceme uΦinit, musφme uvnit° Üablony pou₧φt instrukci <xsl:apply-templates/>. Ta °φkß, ₧e se mß danß v∞tev stromu zpracovßvat dßle a majφ se pro jejφ uzly hledat odpovφdajφcφ Üablony.
Pokud chceme v t∞le Üablony pou₧φt jen textov² obsah n∞jakΘho elementu a jeho podelement∙, ale nechceme aplikovat dalÜφ Üablony, hodφ se instrukce <xsl:value-of select="v²raz"/>. Ta vybere pouze obsah textov²ch uzl∙, kterΘ jsou potomky elementu urΦenΘho pomocφ v²razu (ten je op∞t zapsßn pomocφ syntaxe XPath).
V n∞kter²ch p°φpadech je jedno, kterou mo₧nost pou₧ijeme. Budeme-li chtφt, aby se nßzev firmy na faktu°e zobrazoval tuΦn∞ (HTML tag <b>), mßme dv∞ mo₧nosti, jak toho dosßhnout.
<xsl:template match="nazev"> <b><xsl:value-of select="."/></b> </xsl:template> <xsl:template match="nazev"> <b><xsl:apply-templates/></b> </xsl:template>
Pokud vÜak pot°ebujeme zpracovßvat slo₧it∞jÜφ a vno°enΘ struktury, je v∞tÜinou p°ehledn∞jÜφ, kdy₧ pou₧ijeme opakovanΘ aplikovßnφ Üablon. Oba dva p°φstupy jsou ilustrovßny v p°φklad∞ 1.
P°φklad 1. Styl pro p°evod XML faktury do formßtu HTML
<?xml version="1.0" encoding="windows-1250"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <html> <head> <title>Faktura │■slo: <xsl:value-of select="faktura/@cislo"/></title> </head> <body> <table border="1" width="100%"> <tr valign="top"> <td rowspan="4"> <xsl:apply-templates select="faktura/dodavatel"/> </td> <td align="right"> <xsl:value-of select="faktura/@cislo"/> </td> </tr> <tr valign="top"> <td> <xsl:apply-templates select="faktura/odberatel"/> </td> </tr> <tr valign="top"> <td>Datum vystaven■: <xsl:value-of select="faktura/@vystaveni"/> </td> </tr> <tr valign="top"> <td>Datum splatnosti: <xsl:value-of select="faktura/@splatnost"/> </td> </tr> <tr> <td colspan="2"> <table border="0" width="100%"> <xsl:apply-templates select="faktura/polozka"/> </table> </td> </tr> </table> </body> </html> </xsl:template> <xsl:template match="dodavatel"> <p><b><i>Dodavatel:</i></b></p> <xsl:apply-templates/> </xsl:template> <xsl:template match="odberatel"> <b><i>Odb↓ratel:</i></b><br/> <xsl:apply-templates/> </xsl:template> <xsl:template match="nazev"> <b><xsl:apply-templates/></b><br/> </xsl:template> <xsl:template match="adresa"> <xsl:apply-templates/><br/> </xsl:template> <xsl:template match="ico"> IO: <xsl:apply-templates/><br/> </xsl:template> <xsl:template match="dic"> DI: <xsl:apply-templates/><br/> </xsl:template> <xsl:template match="polozka"> <tr> <td> <xsl:value-of select="popis"/> </td> <td align="right"> DPH <xsl:value-of select="dph"/> </td> <td align="right"> <xsl:value-of select="cena"/> <xsl:text> </xsl:text> <xsl:value-of select="cena/@mena"/> </td> </tr> </xsl:template> </xsl:stylesheet>