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 12. Rozšíření XSLT

12.1. Výstup do více souborů
12.2. Kombinování různých rozšíření v jednom stylu
12.3. Volání externích funkcí
12.4. Rozšiřující instrukce

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.

12.1 Výstup do více souborů

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>

© 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