123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- <?xml version='1.0' encoding='ISO-8859-1'?>
- <!--
- $LastChangedBy$
- $Date$
- -->
- <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 -->
- <!-- 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 unneded 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:choose>
- <!-- For non dummy sect1 targets, create a link. -->
- <xsl:when test="local-name(.) = 'sect1'">
- <xsl:choose>
- <xsl:when test="@role='dummy'">
- <span class="dummy">
- <xsl:apply-templates select="." mode="titleabbrev.markup"/>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <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:otherwise>
- </xsl:choose>
- </xsl:when>
- <!-- For part, preface, and chapter, use hX and add the label.
- For BLFS, make it a link. -->
- <xsl:when test="local-name(.) = 'part' or local-name(.) = 'preface'
- or local-name(.) = 'chapter'">
- <xsl:choose>
- <xsl:when test="$book-type = 'blfs'">
- <xsl:apply-templates select="." mode="add.hX">
- <xsl:with-param name="toc-context" select="$toc-context"/>
- <xsl:with-param name="with-link" select="1"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="." mode="add.hX">
- <xsl:with-param name="toc-context" select="$toc-context"/>
- <xsl:with-param name="with-link" select="0"/>
- </xsl:apply-templates>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <!-- For appendix , create a link and add the label.
- For BLFS, use hX. -->
- <xsl:when test="local-name(.) = 'appendix'">
- <xsl:choose>
- <xsl:when test="$book-type = 'blfs'">
- <xsl:apply-templates select="." mode="add.hX">
- <xsl:with-param name="toc-context" select="$toc-context"/>
- <xsl:with-param name="with-link" select="1"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="." mode="add.link">
- <xsl:with-param name="toc-context" select="$toc-context"/>
- </xsl:apply-templates>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <!-- For other targets like Index, use hX, create a link, and label it. -->
- <xsl:otherwise>
- <xsl:apply-templates select="." mode="add.hX">
- <xsl:with-param name="toc-context" select="$toc-context"/>
- <xsl:with-param name="with-link" select="1"/>
- </xsl:apply-templates>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
- <!-- Self-made template to add hX tags to toc lines. -->
- <xsl:template match="*" mode="add.hX">
- <xsl:param name="toc-context" select="."/>
- <xsl:param name="with-link" select="0"/>
- <xsl:param name="hlevel">
- <xsl:choose>
- <xsl:when test="local-name(.)='chapter' or local-name(.)='preface'">4</xsl:when>
- <xsl:otherwise>3</xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:element name="h{$hlevel}" namespace="http://www.w3.org/1999/xhtml">
- <xsl:choose>
- <xsl:when test="$with-link != 0">
- <xsl:apply-templates select="." mode="add.link">
- <xsl:with-param name="toc-context" select="$toc-context"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="." mode="label.and.title"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:element>
- </xsl:template>
- <!-- Self-made template to made toc line a link. -->
- <xsl:template match="*" mode="add.link">
- <xsl:param name="toc-context" select="."/>
- <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="label.and.title"/>
- </a>
- </xsl:template>
- <!-- Self-made template to write the target title and label it. -->
- <xsl:template match="*" mode="label.and.title">
- <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"/>
- </xsl:template>
- </xsl:stylesheet>
|