123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- <?xml version='1.0' encoding='ISO-8859-1'?>
- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns="http://www.w3.org/1999/xhtml"
- version="1.0">
- <!-- This stylesheet controls how the TOC are generated -->
- <!-- Control generation of ToCs and LoTs -->
- <xsl:param name="generate.toc">
- book toc,title
- preface toc
- part toc
- chapter toc
- appendix nop
- sect1 nop
- sect2 nop
- sect3 nop
- sect4 nop
- sect5 nop
- section nop
- </xsl:param>
- <!-- How deep should recursive sections appear in the TOC? -->
- <xsl:param name="toc.section.depth">1</xsl:param>
- <!-- How maximaly deep should be each TOC? -->
- <xsl:param name="toc.max.depth">3</xsl:param>
- <!-- make.toc:
- Using h3 for TOC title.
- Using ul for TOC list style.
- Removed code for $manual.toc and $qanda.in.toc -->
- <!-- The original template is in {docbook-xsl}/xhtml/autotoc.xsl -->
- <xsl:template name="make.toc">
- <xsl:param name="toc-context" select="."/>
- <xsl:param name="nodes" select="/NOT-AN-ELEMENT"/>
- <xsl:if test="$nodes">
- <div class="toc">
- <h3>
- <xsl:call-template name="gentext">
- <xsl:with-param name="key">TableofContents</xsl:with-param>
- </xsl:call-template>
- </h3>
- <ul>
- <xsl:apply-templates select="$nodes" mode="toc">
- <xsl:with-param name="toc-context" select="$toc-context"/>
- </xsl:apply-templates>
- </ul>
- </div>
- </xsl:if>
- </xsl:template>
- <!-- subtoc:
- Using ul for TOC list style.
- Removed code for $qanda.in.toc
- Removed code for sect* others than sect1 -->
- <!-- The original template is in {docbook-xsl}/xhtml/autotoc.xsl -->
- <xsl:template name="subtoc">
- <xsl:param name="toc-context" select="."/>
- <xsl:param name="nodes" select="NOT-AN-ELEMENT"/>
- <xsl:variable name="subtoc">
- <ul>
- <xsl:apply-templates mode="toc" select="$nodes">
- <xsl:with-param name="toc-context" select="$toc-context"/>
- </xsl:apply-templates>
- </ul>
- </xsl:variable>
- <xsl:variable name="depth">
- <xsl:choose>
- <xsl:when test="local-name(.) = 'sect1'">1</xsl:when>
- <xsl:otherwise>0</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="depth.from.context"
- select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
- <li class="{name(.)}">
- <xsl:call-template name="toc.line">
- <xsl:with-param name="toc-context" select="$toc-context"/>
- </xsl:call-template>
- <xsl:if test="$toc.section.depth > $depth and count($nodes)>0
- and $toc.max.depth > $depth.from.context">
- <xsl:copy-of select="$subtoc"/>
- </xsl:if>
- </li>
- </xsl:template>
- <!-- toc.line:
- Adding the h* tags and dropping redundats links.
- This template is a full re-made version of the original one. -->
- <!-- The original template is in {docbook-xsl}/xhtml/autotoc.xsl -->
- <xsl:template name="toc.line">
- <xsl:param name="toc-context" select="."/>
- <xsl:param name="depth" select="1"/>
- <xsl:param name="depth.from.context" select="8"/>
- <xsl:choose>
- <!-- For sect1 targets, create a link -->
- <xsl:when test="local-name(.) = 'sect1'">
- <a>
- <xsl:attribute name="href">
- <xsl:call-template name="href.target">
- <xsl:with-param name="context" select="$toc-context"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:apply-templates select="." mode="titleabbrev.markup"/>
- </a>
- </xsl:when>
- <!-- For appendix target, create a link and add the label -->
- <xsl:when test="local-name(.) = 'appendix'">
- <a>
- <xsl:attribute name="href">
- <xsl:call-template name="href.target">
- <xsl:with-param name="context" select="$toc-context"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:variable name="label">
- <xsl:apply-templates select="." mode="label.markup"/>
- </xsl:variable>
- <xsl:copy-of select="$label"/>
- <xsl:if test="$label != ''">
- <xsl:value-of select="$autotoc.label.separator"/>
- </xsl:if>
- <xsl:apply-templates select="." mode="titleabbrev.markup"/>
- </a>
- </xsl:when>
- <!-- For chapter and preface, use h4 and add the label -->
- <xsl:when test="local-name(.) = 'chapter' or local-name(.) = 'preface'">
- <h4>
- <xsl:variable name="label">
- <xsl:apply-templates select="." mode="label.markup"/>
- </xsl:variable>
- <xsl:copy-of select="$label"/>
- <xsl:if test="$label != ''">
- <xsl:value-of select="$autotoc.label.separator"/>
- </xsl:if>
- <xsl:apply-templates select="." mode="titleabbrev.markup"/>
- </h4>
- </xsl:when>
- <!-- for part, use h3 and add the label -->
- <xsl:when test="local-name(.) = 'part'">
- <h3>
- <xsl:variable name="label">
- <xsl:apply-templates select="." mode="label.markup"/>
- </xsl:variable>
- <xsl:copy-of select="$label"/>
- <xsl:if test="$label != ''">
- <xsl:value-of select="$autotoc.label.separator"/>
- </xsl:if>
- <xsl:apply-templates select="." mode="titleabbrev.markup"/>
- </h3>
- </xsl:when>
- <!-- For other targets like Index, create a link inside h3 plus label it -->
- <xsl:otherwise>
- <h3>
- <a>
- <xsl:attribute name="href">
- <xsl:call-template name="href.target">
- <xsl:with-param name="context" select="$toc-context"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:variable name="label">
- <xsl:apply-templates select="." mode="label.markup"/>
- </xsl:variable>
- <xsl:copy-of select="$label"/>
- <xsl:if test="$label != ''">
- <xsl:value-of select="$autotoc.label.separator"/>
- </xsl:if>
- <xsl:apply-templates select="." mode="titleabbrev.markup"/>
- </a>
- </h3>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
- </xsl:stylesheet>
|