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.

9.2 Import stylu – <xsl:import>

Při importu stylu jsou speciálním způsobem ošetřeny konflikty. Instrukce z naimportovaného stylu mají nižší prioritu. Můžeme je proto snadno přepsat ve stylu, který provádí import. Odpovídající importovaná definice pak nebude přístupná.

Tento případ se hodí, pokud chceme z větší části využít již hotový styl, a jen ho drobně modifikovat. Například můžeme velice jednoduše upravit již existující styl pro formátování katalogu tak, aby přidal i odkazy.

Příklad 9.1. Import stylu – katalog-odkazy2.xsl

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0">

  <xsl:import href="katalog-obrazky.xsl"/>

  <xsl:template match="nazev">
    <TH>
      <A href="#{generate-id(..)}">
        <xsl:apply-templates/>
      </A>
    </TH>
  </xsl:template>
  
  <xsl:template match="polozka" mode="detailni">
    <A NAME="{generate-id(.)}"></A>
    <xsl:apply-templates mode="detailni"/>
    <HR/>
  </xsl:template>
  
</xsl:stylesheet>

Takovýto přístup nám šetří práci a navíc nám umožňuje lépe spravovat styly. Změna v původním stylu (např. změna barev) se promítne i do toho upraveného.

Styly lze importovat v libovolném počtu úrovní (i importovaný styl, může importovat nějaký další styl).

Pokud chceme využít i kód v importem zastíněné šabloně, můžeme toho dosáhnout pomocí <xsl:apply-imports>.

Příklad 9.2. Import stylu s apply-importskatalog-odkazy3.xsl

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0">

  <xsl:import href="katalog-obrazky.xsl"/>

  <xsl:template match="nazev">
    <TH>
      <A href="#{generate-id(..)}">
        <xsl:apply-templates/>
      </A>
    </TH>
  </xsl:template>
  
  <xsl:template match="polozka" mode="detailni">
    <A NAME="{generate-id(.)}"></A>
    <xsl:apply-imports/>
  </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