| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 | <?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">    <!-- General settings -->  <xsl:param name="generate.toc">    appendix  nop    book      toc,title    chapter   nop    part      toc    preface   nop    qandadiv  nop    qandaset  nop    reference nop    sect1     nop    sect2     nop    sect3     nop    sect4     nop    sect5     nop    section   nop    set       nop  </xsl:param>  <xsl:param name="toc.section.depth">1</xsl:param>  <xsl:param name="toc.max.depth">3</xsl:param>    <!-- Making the TOC -->  <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>    <!-- Making the subtocs -->  <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>    <!--Adding the h* tags and dropping redundats links-->  <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>      <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>      <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>      <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>      <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>      <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>
 |