Generování obsahu III.

Příklad 12. Řešení pomocí režimů

<xsl:template match="/">
  ...
  <fo:block>Obsah</fo:block>
  <xsl:apply-templates mode="toc"/>

  <xsl:apply-templates/>
  ...
</xsl:template>

<xsl:template match="kapitola">
  <fo:block ... id="{generate-id(.)}">
    <xsl:apply-templates/>
  </fo:block>
</xsl:template>

<xsl:template match="podkapitola">
  <fo:block ... id="{generate-id(.)}">
    <xsl:apply-templates/>
  </fo:block>
</xsl:template>

<xsl:template match="kapitola" mode="toc">
  <fo:block text-align-last="justify">
    <fo:basic-link internal-destination="{generate-id(.)}">
      <xsl:value-of select="název"/>
    </fo:basic-link>
    <fo:leader leader-pattern="dots"/>
    <fo:page-number-citation ref-id="{generate-id(.)}"/>
  </fo:block>
  <xsl:apply-templates mode="toc"/>
</xsl:template>

<xsl:template match="podkapitola" mode="toc">
  <fo:block start-indent="1em" text-align-last="justify">
    <fo:basic-link internal-destination="{generate-id(.)}">
      <xsl:value-of select="název"/>
    </fo:basic-link>
    <fo:leader leader-pattern="dots"/>
    <fo:page-number-citation ref-id="{generate-id(.)}"/>
  </fo:block>
</xsl:template>

<xsl:template match="text()" mode="toc"/>