Jednotlivé procesory přidávají oproti standardu různá zajímavá a užitečná rozšíření. Navíc můžeme většinu procesorů rozšířit o vlastní funkce a instrukce. V této části se proto podíváme na nejběžnější rozšíření a stručně se seznámíme i s novinkami v XSLT 2.0.
Pokud chceme používat rozšíření, musíme si deklarovat příslušný
jmenný prostor a jeho prefix uvést v extension-element-prefixes
u kořenového
elementu dokumentu.
Většina procesorů umí generovat více výstupních souborů najednou. My si to ukážeme v procesoru Saxon.
K dispozici je zde instrukce <saxon:output>
, která zahájí výstup do
nového dokumentu. Jeho jméno je určeno pomocí atributu href
. Kromě toho můžeme použít další
atributy, které známe z <xsl:output>
. Výsledek všech instrukcí
a případné voláni dalších šablon uvedené mezi
<saxon:output>
a </saxon:output>
se zapíše do nového
samostatného souboru.
Příklad 12.1. Výstup do více dokumentů – katalog-soubory.xsl
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:saxon="http://icl.com/saxon" extension-element-prefixes="saxon"> <xsl:import href="katalog-obrazky.xsl"/> <xsl:output method="html" encoding="utf-8" saxon:character-representation="native"/> <xsl:template match="/"> <saxon:output href="katalog.html" method="html"> <xsl:apply-imports/> </saxon:output> </xsl:template> <xsl:template match="nazev"> <TH> <A href="{generate-id(..)}.html"> <xsl:apply-templates/> </A> </TH> </xsl:template> <xsl:template match="polozka" mode="detailni"> <saxon:output href="{generate-id(.)}.html" method="html"> <html> <head> <title><xsl:value-of select="nazev"/></title> </head> <body> <xsl:apply-imports/> <p align="center"><a href="katalog.html">Zpět</a></p> </body> </html> </saxon:output> </xsl:template> </xsl:stylesheet>