]> granicus.if.org Git - docbook-dsssl/commitdiff
Rework(ing) ToC/LoT generation to support chunking the ToC/LoT; don't output empty...
authorNorman Walsh <ndw@nwalsh.com>
Thu, 22 Aug 2002 22:19:54 +0000 (22:19 +0000)
committerNorman Walsh <ndw@nwalsh.com>
Thu, 22 Aug 2002 22:19:54 +0000 (22:19 +0000)
xsl/html/autotoc.xsl
xsl/html/chunk-common.xsl
xsl/html/chunk.xsl
xsl/html/component.xsl
xsl/html/division.xsl

index d43e3390a93e10aa1a1bd309cb352322dac1ea88..8ffe6567cc4690e0ef862fa4cf9d17aef40c4bd7 100644 (file)
@@ -27,8 +27,9 @@
   </xsl:choose>
 </xsl:variable>
 
-<xsl:template name="set.toc">
+<xsl:template name="make.toc">
   <xsl:param name="toc-context" select="."/>
+  <xsl:param name="nodes" select="/NOT-AN-ELEMENT"/>
 
   <xsl:variable name="toc.title">
     <p>
@@ -59,8 +60,6 @@
       </xsl:if>
     </xsl:when>
     <xsl:otherwise>
-      <xsl:variable name="nodes" select="book|setindex"/>
-
       <xsl:if test="$nodes">
         <div class="toc">
           <xsl:copy-of select="$toc.title"/>
   </xsl:choose>
 </xsl:template>
 
-<xsl:template name="division.toc">
+<xsl:template name="make.lots">
+  <xsl:param name="toc.params" select="''"/>
+  <xsl:param name="toc"/>
+
+  <xsl:if test="contains($toc.params, 'toc')">
+    <xsl:copy-of select="$toc"/>
+  </xsl:if>
+
+  <xsl:if test="contains($toc.params, 'figure')">
+    <xsl:call-template name="list.of.titles">
+      <xsl:with-param name="titles" select="'figure'"/>
+      <xsl:with-param name="nodes" select=".//figure"/>
+    </xsl:call-template>
+  </xsl:if>
+
+  <xsl:if test="contains($toc.params, 'table')">
+    <xsl:call-template name="list.of.titles">
+      <xsl:with-param name="titles" select="'table'"/>
+      <xsl:with-param name="nodes" select=".//table"/>
+    </xsl:call-template>
+  </xsl:if>
+
+  <xsl:if test="contains($toc.params, 'example')">
+    <xsl:call-template name="list.of.titles">
+      <xsl:with-param name="titles" select="'example'"/>
+      <xsl:with-param name="nodes" select=".//example"/>
+    </xsl:call-template>
+  </xsl:if>
+
+  <xsl:if test="contains($toc.params, 'equation')">
+    <xsl:call-template name="list.of.titles">
+      <xsl:with-param name="titles" select="'equation'"/>
+      <xsl:with-param name="nodes" select=".//equation[title]"/>
+    </xsl:call-template>
+  </xsl:if>
+</xsl:template>
+
+<!-- ====================================================================== -->
+
+<xsl:template name="set.toc">
   <xsl:param name="toc-context" select="."/>
 
-  <xsl:variable name="toc.title">
-    <p>
-      <b>
-        <xsl:call-template name="gentext">
-          <xsl:with-param name="key">TableofContents</xsl:with-param>
-        </xsl:call-template>
-      </b>
-    </p>
-  </xsl:variable>
+  <xsl:call-template name="make.toc">
+    <xsl:with-param name="toc-context" select="$toc-context"/>
+    <xsl:with-param name="nodes" select="book|setindex"/>
+  </xsl:call-template>
+</xsl:template>
 
-  <xsl:choose>
-    <xsl:when test="$manual.toc != ''">
-      <xsl:variable name="id">
-        <xsl:call-template name="object.id"/>
-      </xsl:variable>
-      <xsl:variable name="toc" select="document($manual.toc, .)"/>
-      <xsl:variable name="tocentry" select="$toc//tocentry[@linkend=$id]"/>
-      <xsl:if test="$tocentry and $tocentry/*">
-        <div class="toc">
-          <xsl:copy-of select="$toc.title"/>
-          <xsl:element name="{$toc.list.type}">
-            <xsl:call-template name="manual-toc">
-              <xsl:with-param name="tocentry" select="$tocentry/*[1]"/>
-            </xsl:call-template>
-          </xsl:element>
-        </div>
-      </xsl:if>
-    </xsl:when>
-    <xsl:otherwise>
-      <xsl:variable name="nodes" select="part|reference
+<xsl:template name="division.toc">
+  <xsl:param name="toc-context" select="."/>
+
+  <xsl:call-template name="make.toc">
+    <xsl:with-param name="toc-context" select="$toc-context"/>
+    <xsl:with-param name="nodes" select="part|reference
                                          |preface|chapter|appendix
                                          |article
                                          |bibliography|glossary|index
                                          |refentry
                                          |bridgehead"/>
-      <xsl:if test="$nodes">
-        <div class="toc">
-          <xsl:copy-of select="$toc.title"/>
-          <xsl:element name="{$toc.list.type}">
-            <xsl:apply-templates select="$nodes" mode="toc">
-              <xsl:with-param name="toc-context" select="$toc-context"/>
-            </xsl:apply-templates>
-          </xsl:element>
-        </div>
-      </xsl:if>
-    </xsl:otherwise>
-  </xsl:choose>
+  </xsl:call-template>
 </xsl:template>
 
 <xsl:template name="component.toc">
   <xsl:param name="toc-context" select="."/>
 
-  <xsl:variable name="toc.title">
-    <p>
-      <b>
-        <xsl:call-template name="gentext">
-          <xsl:with-param name="key">TableofContents</xsl:with-param>
-        </xsl:call-template>
-      </b>
-    </p>
-  </xsl:variable>
-
-  <xsl:choose>
-    <xsl:when test="$manual.toc != ''">
-      <xsl:variable name="id">
-        <xsl:call-template name="object.id"/>
-      </xsl:variable>
-      <xsl:variable name="toc" select="document($manual.toc, .)"/>
-      <xsl:variable name="tocentry" select="$toc//tocentry[@linkend=$id]"/>
-      <xsl:if test="$tocentry and $tocentry/*">
-        <div class="toc">
-          <xsl:copy-of select="$toc.title"/>
-          <xsl:element name="{$toc.list.type}">
-            <xsl:call-template name="manual-toc">
-              <xsl:with-param name="tocentry" select="$tocentry/*[1]"/>
-            </xsl:call-template>
-          </xsl:element>
-        </div>
-      </xsl:if>
-    </xsl:when>
-    <xsl:otherwise>
-      <xsl:variable name="nodes" select="section|sect1|refentry
+  <xsl:call-template name="make.toc">
+    <xsl:with-param name="toc-context" select="$toc-context"/>
+    <xsl:with-param name="nodes" select="section|sect1|refentry
                                          |article|bibliography|glossary
                                          |appendix|bridgehead[not(@renderas)]
                                          |.//bridgehead[@renderas='sect1']"/>
-      <xsl:if test="$nodes">
-        <div class="toc">
-          <xsl:copy-of select="$toc.title"/>
-          <xsl:element name="{$toc.list.type}">
-            <xsl:apply-templates select="$nodes" mode="toc">
-              <xsl:with-param name="toc-context" select="$toc-context"/>
-            </xsl:apply-templates>
-          </xsl:element>
-        </div>
-      </xsl:if>
-    </xsl:otherwise>
-  </xsl:choose>
+  </xsl:call-template>
 </xsl:template>
 
 <xsl:template name="section.toc">
   <xsl:param name="toc-context" select="."/>
 
-  <xsl:variable name="toc.title">
-    <p>
-      <b>
-        <xsl:call-template name="gentext">
-          <xsl:with-param name="key">TableofContents</xsl:with-param>
-        </xsl:call-template>
-      </b>
-    </p>
-  </xsl:variable>
-
-  <xsl:choose>
-    <xsl:when test="$manual.toc != ''">
-      <xsl:variable name="id">
-        <xsl:call-template name="object.id"/>
-      </xsl:variable>
-      <xsl:variable name="toc" select="document($manual.toc, .)"/>
-      <xsl:variable name="tocentry" select="$toc//tocentry[@linkend=$id]"/>
-      <xsl:if test="$tocentry and $tocentry/*">
-        <div class="toc">
-          <xsl:copy-of select="$toc.title"/>
-          <xsl:element name="{$toc.list.type}">
-            <xsl:call-template name="manual-toc">
-              <xsl:with-param name="tocentry" select="$tocentry/*[1]"/>
-            </xsl:call-template>
-          </xsl:element>
-        </div>
-      </xsl:if>
-    </xsl:when>
-    <xsl:otherwise>
-      <xsl:variable name="nodes"
+  <xsl:call-template name="make.toc">
+    <xsl:with-param name="toc-context" select="$toc-context"/>
+    <xsl:with-param name="nodes"
                     select="section|sect1|sect2|sect3|sect4|sect5|refentry
                             |bridgehead"/>
-      <xsl:if test="$nodes">
-        <div class="toc">
-          <xsl:copy-of select="$toc.title"/>
-          <xsl:element name="{$toc.list.type}">
-            <xsl:apply-templates select="$nodes" mode="toc">
-              <xsl:with-param name="toc-context" select="$toc-context"/>
-            </xsl:apply-templates>
-          </xsl:element>
-        </div>
-      </xsl:if>
-    </xsl:otherwise>
-  </xsl:choose>
+  </xsl:call-template>
 </xsl:template>
 
 <!-- ==================================================================== -->
index 2e59858415d2132e67024a4b935b2e464294b7eb..b8880e6eddd5df885584bf272e9fdc57ead0f703 100644 (file)
   </xsl:if>
 
   <xsl:value-of select="$fn"/>
+  <xsl:value-of select="$html.ext"/>
 </xsl:template>
 
 <xsl:template match="*" mode="recursive-chunk-filename">
       <!-- if this is the root element, use the root.filename -->
       <xsl:when test="not(parent::*) and $root.filename != ''">
         <xsl:value-of select="$root.filename"/>
-        <xsl:value-of select="$html.ext"/>
       </xsl:when>
       <!-- if there's no dbhtml filename, and if we're to use IDs as -->
       <!-- filenames, then use the ID to generate the filename. -->
       <xsl:when test="@id and $use.id.as.filename != 0">
         <xsl:value-of select="@id"/>
-        <xsl:value-of select="$html.ext"/>
       </xsl:when>
       <xsl:otherwise></xsl:otherwise>
     </xsl:choose>
 
     <xsl:when test="name(.)='set'">
       <xsl:value-of select="$root.filename"/>
-      <xsl:if test="not($recursive)">
-        <xsl:value-of select="$html.ext"/>
-      </xsl:if>
     </xsl:when>
 
     <xsl:when test="name(.)='book'">
       <xsl:text>bk</xsl:text>
       <xsl:number level="any" format="01"/>
-      <xsl:if test="not($recursive)">
-        <xsl:value-of select="$html.ext"/>
-      </xsl:if>
     </xsl:when>
 
     <xsl:when test="name(.)='article'">
 
       <xsl:text>ar</xsl:text>
       <xsl:number level="any" format="01" from="book"/>
-      <xsl:if test="not($recursive)">
-        <xsl:value-of select="$html.ext"/>
-      </xsl:if>
     </xsl:when>
 
     <xsl:when test="name(.)='preface'">
 
       <xsl:text>pr</xsl:text>
       <xsl:number level="any" format="01" from="book"/>
-      <xsl:if test="not($recursive)">
-        <xsl:value-of select="$html.ext"/>
-      </xsl:if>
     </xsl:when>
 
     <xsl:when test="name(.)='chapter'">
 
       <xsl:text>ch</xsl:text>
       <xsl:number level="any" format="01" from="book"/>
-      <xsl:if test="not($recursive)">
-        <xsl:value-of select="$html.ext"/>
-      </xsl:if>
     </xsl:when>
 
     <xsl:when test="name(.)='appendix'">
 
       <xsl:text>ap</xsl:text>
       <xsl:number level="any" format="a" from="book"/>
-      <xsl:if test="not($recursive)">
-        <xsl:value-of select="$html.ext"/>
-      </xsl:if>
     </xsl:when>
 
     <xsl:when test="name(.)='part'">
 
       <xsl:text>pt</xsl:text>
       <xsl:number level="any" format="01" from="book"/>
-      <xsl:if test="not($recursive)">
-        <xsl:value-of select="$html.ext"/>
-      </xsl:if>
     </xsl:when>
 
     <xsl:when test="name(.)='reference'">
 
       <xsl:text>rn</xsl:text>
       <xsl:number level="any" format="01" from="book"/>
-      <xsl:if test="not($recursive)">
-        <xsl:value-of select="$html.ext"/>
-      </xsl:if>
     </xsl:when>
 
     <xsl:when test="name(.)='refentry'">
 
       <xsl:text>re</xsl:text>
       <xsl:number level="any" format="01" from="book"/>
-      <xsl:if test="not($recursive)">
-        <xsl:value-of select="$html.ext"/>
-      </xsl:if>
     </xsl:when>
 
     <xsl:when test="name(.)='colophon'">
 
       <xsl:text>co</xsl:text>
       <xsl:number level="any" format="01" from="book"/>
-      <xsl:if test="not($recursive)">
-        <xsl:value-of select="$html.ext"/>
-      </xsl:if>
     </xsl:when>
 
     <xsl:when test="local-name(.) = 'sect1'
       </xsl:apply-templates>
       <xsl:text>s</xsl:text>
       <xsl:number format="01"/>
-      <xsl:if test="not($recursive)">
-        <xsl:value-of select="$html.ext"/>
-      </xsl:if>
     </xsl:when>
 
     <xsl:when test="name(.)='sect1' or name(.)='section'">
       </xsl:apply-templates>
       <xsl:text>s</xsl:text>
       <xsl:number level="any" format="01" from="preface|chapter|appendix"/>
-      <xsl:if test="not($recursive)">
-        <xsl:value-of select="$html.ext"/>
-      </xsl:if>
     </xsl:when>
 
     <xsl:when test="name(.)='bibliography'">
 
       <xsl:text>bi</xsl:text>
       <xsl:number level="any" format="01" from="book"/>
-      <xsl:if test="not($recursive)">
-        <xsl:value-of select="$html.ext"/>
-      </xsl:if>
     </xsl:when>
 
     <xsl:when test="name(.)='glossary'">
 
       <xsl:text>go</xsl:text>
       <xsl:number level="any" format="01" from="book"/>
-      <xsl:if test="not($recursive)">
-        <xsl:value-of select="$html.ext"/>
-      </xsl:if>
     </xsl:when>
 
     <xsl:when test="name(.)='index'">
 
       <xsl:text>ix</xsl:text>
       <xsl:number level="any" format="01" from="book"/>
-      <xsl:if test="not($recursive)">
-        <xsl:value-of select="$html.ext"/>
-      </xsl:if>
     </xsl:when>
 
     <xsl:when test="name(.)='setindex'">
       <xsl:text>si</xsl:text>
       <xsl:number level="any" format="01" from="set"/>
-      <xsl:if test="not($recursive)">
-        <xsl:value-of select="$html.ext"/>
-      </xsl:if>
     </xsl:when>
 
     <xsl:otherwise>
       <xsl:text>chunk-filename-error-</xsl:text>
       <xsl:value-of select="name(.)"/>
       <xsl:number level="any" format="01" from="set"/>
-      <xsl:if test="not($recursive)">
-        <xsl:value-of select="$html.ext"/>
-      </xsl:if>
     </xsl:otherwise>
   </xsl:choose>
 </xsl:template>
 <xsl:template name="header.navigation">
   <xsl:param name="prev" select="/foo"/>
   <xsl:param name="next" select="/foo"/>
+  <xsl:param name="nav.context"/>
+
   <xsl:variable name="home" select="/*[1]"/>
   <xsl:variable name="up" select="parent::*"/>
 
+  <xsl:variable name="row1" select="$navig.showtitles != 0"/>
+  <xsl:variable name="row2" select="count($prev) &gt; 0
+                                    or (count($up) &gt; 0 
+                                        and $up != $home
+                                        and $navig.showtitles != 0)
+                                    or count($next) &gt; 0"/>
+
   <xsl:if test="$suppress.navigation = '0' and $suppress.header.navigation = '0'">
     <div class="navheader">
-      <table width="100%" summary="Navigation header">
-       <xsl:if test="$navig.showtitles != 0">
-         <tr>
-           <th colspan="3" align="center">
-              <xsl:apply-templates select="." mode="object.title.markup"/>
-            </th>
-          </tr>
-        </xsl:if>
-        <tr>
-          <td width="20%" align="left">
-            <xsl:if test="count($prev)>0">
-              <a accesskey="p">
-                <xsl:attribute name="href">
-                  <xsl:call-template name="href.target">
-                    <xsl:with-param name="object" select="$prev"/>
-                  </xsl:call-template>
-                </xsl:attribute>
-                <xsl:call-template name="navig.content">
-                   <xsl:with-param name="direction" select="'prev'"/>
-               </xsl:call-template>
-              </a>
-            </xsl:if>
-            <xsl:text>&#160;</xsl:text>
-          </td>
-          <th width="60%" align="center">
-            <xsl:choose>
-              <xsl:when test="count($up) > 0 and $up != $home and $navig.showtitles != 0">
-                <xsl:apply-templates select="$up" mode="object.title.markup"/>
-              </xsl:when>
-              <xsl:otherwise>&#160;</xsl:otherwise>
-            </xsl:choose>
-          </th>
-          <td width="20%" align="right">
-            <xsl:text>&#160;</xsl:text>
-            <xsl:if test="count($next)>0">
-              <a accesskey="n">
-                <xsl:attribute name="href">
-                  <xsl:call-template name="href.target">
-                    <xsl:with-param name="object" select="$next"/>
-                  </xsl:call-template>
-                </xsl:attribute>
-                <xsl:call-template name="navig.content">
-                   <xsl:with-param name="direction" select="'next'"/>
-               </xsl:call-template>
-              </a>
-            </xsl:if>
-          </td>
-        </tr>
-      </table>
+      <xsl:if test="$row1 or $row2">
+        <table width="100%" summary="Navigation header">
+          <xsl:if test="$row1">
+            <tr>
+              <th colspan="3" align="center">
+                <xsl:apply-templates select="." mode="object.title.markup"/>
+              </th>
+            </tr>
+          </xsl:if>
+
+          <xsl:if test="$row2">
+            <tr>
+              <td width="20%" align="left">
+                <xsl:if test="count($prev)>0">
+                  <a accesskey="p">
+                    <xsl:attribute name="href">
+                      <xsl:call-template name="href.target">
+                        <xsl:with-param name="object" select="$prev"/>
+                      </xsl:call-template>
+                    </xsl:attribute>
+                    <xsl:call-template name="navig.content">
+                      <xsl:with-param name="direction" select="'prev'"/>
+                    </xsl:call-template>
+                  </a>
+                </xsl:if>
+                <xsl:text>&#160;</xsl:text>
+              </td>
+              <th width="60%" align="center">
+                <xsl:choose>
+                  <xsl:when test="count($up) > 0
+                                  and $up != $home
+                                  and $navig.showtitles != 0">
+                    <xsl:apply-templates select="$up" mode="object.title.markup"/>
+                  </xsl:when>
+                  <xsl:otherwise>&#160;</xsl:otherwise>
+                </xsl:choose>
+              </th>
+              <td width="20%" align="right">
+                <xsl:text>&#160;</xsl:text>
+                <xsl:if test="count($next)>0">
+                  <a accesskey="n">
+                    <xsl:attribute name="href">
+                      <xsl:call-template name="href.target">
+                        <xsl:with-param name="object" select="$next"/>
+                      </xsl:call-template>
+                    </xsl:attribute>
+                    <xsl:call-template name="navig.content">
+                      <xsl:with-param name="direction" select="'next'"/>
+                    </xsl:call-template>
+                  </a>
+                </xsl:if>
+              </td>
+            </tr>
+          </xsl:if>
+        </table>
+      </xsl:if>
       <xsl:if test="$header.rule != 0">
         <hr/>
       </xsl:if>
 <xsl:template name="footer.navigation">
   <xsl:param name="prev" select="/foo"/>
   <xsl:param name="next" select="/foo"/>
+  <xsl:param name="nav.context"/>
+
   <xsl:variable name="home" select="/*[1]"/>
   <xsl:variable name="up" select="parent::*"/>
 
+  <xsl:variable name="row1" select="count($prev) &gt; 0
+                                    or count($up) &gt; 0
+                                    or count($next) &gt; 0"/>
+
+  <xsl:variable name="row2" select="($prev and $navig.showtitles != 0)
+                                    or ($home != . or $nav.context = 'toc')
+                                    or ($chunk.tocs.and.lots != 0
+                                        and $nav.context != 'toc')
+                                    or ($next and $navig.showtitles != 0)"/>
+
   <xsl:if test="$suppress.navigation = '0' and $suppress.footer.navigation = '0'">
     <div class="navfooter">
       <xsl:if test="$footer.rule != 0">
         <hr/>
       </xsl:if>
-      <table width="100%" summary="Navigation footer">
-        <tr>
-          <td width="40%" align="left">
-            <xsl:if test="count($prev)>0">
-              <a accesskey="p">
-                <xsl:attribute name="href">
-                  <xsl:call-template name="href.target">
-                    <xsl:with-param name="object" select="$prev"/>
-                  </xsl:call-template>
-                </xsl:attribute>
-               <xsl:call-template name="navig.content">
-                   <xsl:with-param name="direction" select="'prev'"/>
-               </xsl:call-template>
-             </a>
-            </xsl:if>
-            <xsl:text>&#160;</xsl:text>
-          </td>
-          <td width="20%" align="center">
-            <xsl:choose>
-              <xsl:when test="count($up)>0">
-                <a accesskey="u">
-                  <xsl:attribute name="href">
-                    <xsl:call-template name="href.target">
-                      <xsl:with-param name="object" select="$up"/>
+
+      <xsl:if test="$row1 or $row2">
+        <table width="100%" summary="Navigation footer">
+          <xsl:if test="$row1">
+            <tr>
+              <td width="40%" align="left">
+                <xsl:if test="count($prev)>0">
+                  <a accesskey="p">
+                    <xsl:attribute name="href">
+                      <xsl:call-template name="href.target">
+                        <xsl:with-param name="object" select="$prev"/>
+                      </xsl:call-template>
+                    </xsl:attribute>
+                    <xsl:call-template name="navig.content">
+                      <xsl:with-param name="direction" select="'prev'"/>
                     </xsl:call-template>
-                  </xsl:attribute>
-                  <xsl:call-template name="navig.content">
-                     <xsl:with-param name="direction" select="'up'"/>
-                 </xsl:call-template>
-                </a>
-              </xsl:when>
-              <xsl:otherwise>&#160;</xsl:otherwise>
-            </xsl:choose>
-          </td>
-          <td width="40%" align="right">
-            <xsl:text>&#160;</xsl:text>
-            <xsl:if test="count($next)>0">
-              <a accesskey="n">
-                <xsl:attribute name="href">
-                  <xsl:call-template name="href.target">
-                    <xsl:with-param name="object" select="$next"/>
-                  </xsl:call-template>
-                </xsl:attribute>
-                <xsl:call-template name="navig.content">
-                   <xsl:with-param name="direction" select="'next'"/>
-               </xsl:call-template>
-              </a>
-            </xsl:if>
-          </td>
-        </tr>
-
-        <tr>
-          <td width="40%" align="left" valign="top">
-           <xsl:if test="$navig.showtitles != 0">
-              <xsl:apply-templates select="$prev" mode="object.title.markup"/>
-            </xsl:if>
-            <xsl:text>&#160;</xsl:text>
-          </td>
-          <td width="20%" align="center">
-            <xsl:choose>
-              <xsl:when test="$home != .">
-                <a accesskey="h">
-                  <xsl:attribute name="href">
-                    <xsl:call-template name="href.target">
-                      <xsl:with-param name="object" select="$home"/>
+                  </a>
+                </xsl:if>
+                <xsl:text>&#160;</xsl:text>
+              </td>
+              <td width="20%" align="center">
+                <xsl:choose>
+                  <xsl:when test="count($up)>0">
+                    <a accesskey="u">
+                      <xsl:attribute name="href">
+                        <xsl:call-template name="href.target">
+                          <xsl:with-param name="object" select="$up"/>
+                        </xsl:call-template>
+                      </xsl:attribute>
+                      <xsl:call-template name="navig.content">
+                        <xsl:with-param name="direction" select="'up'"/>
+                      </xsl:call-template>
+                    </a>
+                  </xsl:when>
+                  <xsl:otherwise>&#160;</xsl:otherwise>
+                </xsl:choose>
+              </td>
+              <td width="40%" align="right">
+                <xsl:text>&#160;</xsl:text>
+                <xsl:if test="count($next)>0">
+                  <a accesskey="n">
+                    <xsl:attribute name="href">
+                      <xsl:call-template name="href.target">
+                        <xsl:with-param name="object" select="$next"/>
+                      </xsl:call-template>
+                    </xsl:attribute>
+                    <xsl:call-template name="navig.content">
+                      <xsl:with-param name="direction" select="'next'"/>
                     </xsl:call-template>
-                  </xsl:attribute>
-                  <xsl:call-template name="navig.content">
-                   <xsl:with-param name="direction" select="'home'"/>
-                 </xsl:call-template>
-                </a>
-              </xsl:when>
-              <xsl:otherwise>&#160;</xsl:otherwise>
-            </xsl:choose>
-          </td>
-          <td width="40%" align="right" valign="top">
-            <xsl:text>&#160;</xsl:text>
-            <xsl:if test="$navig.showtitles != 0">
-              <xsl:apply-templates select="$next" mode="object.title.markup"/>
-           </xsl:if>
-          </td>
-        </tr>
-      </table>
+                  </a>
+                </xsl:if>
+              </td>
+            </tr>
+          </xsl:if>
+
+          <xsl:if test="$row2">
+            <tr>
+              <td width="40%" align="left" valign="top">
+                <xsl:if test="$navig.showtitles != 0">
+                  <xsl:apply-templates select="$prev" mode="object.title.markup"/>
+                </xsl:if>
+                <xsl:text>&#160;</xsl:text>
+              </td>
+              <td width="20%" align="center">
+                <xsl:choose>
+                  <xsl:when test="$home != . or $nav.context = 'toc'">
+                    <a accesskey="h">
+                      <xsl:attribute name="href">
+                        <xsl:call-template name="href.target">
+                          <xsl:with-param name="object" select="$home"/>
+                        </xsl:call-template>
+                      </xsl:attribute>
+                      <xsl:call-template name="navig.content">
+                        <xsl:with-param name="direction" select="'home'"/>
+                      </xsl:call-template>
+                    </a>
+                    <xsl:if test="$chunk.tocs.and.lots != 0 and $nav.context != 'toc'">
+                      <xsl:text>&#160;|&#160;</xsl:text>
+                    </xsl:if>
+                  </xsl:when>
+                  <xsl:otherwise>&#160;</xsl:otherwise>
+                </xsl:choose>
+
+                <xsl:if test="$chunk.tocs.and.lots != 0 and $nav.context != 'toc'">
+                  <a accesskey="t">
+                    <xsl:attribute name="href">
+                      <xsl:apply-templates select="/*[1]"
+                                           mode="recursive-chunk-filename"/>
+                      <xsl:text>-toc</xsl:text>
+                      <xsl:value-of select="$html.ext"/>
+                    </xsl:attribute>
+                    <xsl:call-template name="gentext">
+                      <xsl:with-param name="key" select="'nav-toc'"/>
+                    </xsl:call-template>
+                  </a>
+                </xsl:if>
+              </td>
+              <td width="40%" align="right" valign="top">
+                <xsl:text>&#160;</xsl:text>
+                <xsl:if test="$navig.showtitles != 0">
+                  <xsl:apply-templates select="$next" mode="object.title.markup"/>
+                </xsl:if>
+              </td>
+            </tr>
+          </xsl:if>
+        </table>
+      </xsl:if>
     </div>
   </xsl:if>
 </xsl:template>
 <xsl:template name="chunk-element-content">
   <xsl:param name="prev"/>
   <xsl:param name="next"/>
+  <xsl:param name="nav.context"/>
   <xsl:param name="content"/>
 
   <html>
       <xsl:call-template name="header.navigation">
        <xsl:with-param name="prev" select="$prev"/>
        <xsl:with-param name="next" select="$next"/>
+       <xsl:with-param name="nav.context" select="$nav.context"/>
       </xsl:call-template>
 
       <xsl:call-template name="user.header.content"/>
       <xsl:call-template name="footer.navigation">
        <xsl:with-param name="prev" select="$prev"/>
        <xsl:with-param name="next" select="$next"/>
+       <xsl:with-param name="nav.context" select="$nav.context"/>
       </xsl:call-template>
 
       <xsl:call-template name="user.footer.navigation"/>
index 31b94ee5de7f487bb71b4660c2adb6ad48b3bc26..e13c33fd1d8b664fccdadf8fcf3ee33626fd549d 100644 (file)
@@ -10,8 +10,8 @@
 <xsl:param name="onechunk" select="0"/>
 <xsl:param name="refentry.separator" select="0"/>
 
-<!-- this doesn't work and I have misgivings about ever getting it to work -->
-<xsl:param name="chunk.tocs.and.lots" select="0"/>
+<!-- this doesn't work yet... -->
+<xsl:param name="chunk.tocs.and.lots" select="1"/>
 
 <!-- ==================================================================== -->
 
 
 <!-- ==================================================================== -->
 
-<xsl:template name="division.toc">
-  <xsl:param name="toc-context" select="."/>
+<xsl:template name="make.lots">
+  <xsl:param name="toc.params" select="''"/>
+  <xsl:param name="toc"/>
 
-  <xsl:variable name="toc.title">
-    <p>
-      <b>
-        <xsl:call-template name="gentext">
-          <xsl:with-param name="key">TableofContents</xsl:with-param>
-        </xsl:call-template>
-      </b>
-    </p>
+  <xsl:variable name="lots">
+    <xsl:if test="contains($toc.params, 'toc')">
+      <xsl:copy-of select="$toc"/>
+    </xsl:if>
+
+    <xsl:if test="contains($toc.params, 'figure')">
+      <xsl:call-template name="list.of.titles">
+        <xsl:with-param name="titles" select="'figure'"/>
+        <xsl:with-param name="nodes" select=".//figure"/>
+      </xsl:call-template>
+    </xsl:if>
+
+    <xsl:if test="contains($toc.params, 'table')">
+      <xsl:call-template name="list.of.titles">
+        <xsl:with-param name="titles" select="'table'"/>
+        <xsl:with-param name="nodes" select=".//table"/>
+      </xsl:call-template>
+    </xsl:if>
+
+    <xsl:if test="contains($toc.params, 'example')">
+      <xsl:call-template name="list.of.titles">
+        <xsl:with-param name="titles" select="'example'"/>
+        <xsl:with-param name="nodes" select=".//example"/>
+      </xsl:call-template>
+    </xsl:if>
+
+    <xsl:if test="contains($toc.params, 'equation')">
+      <xsl:call-template name="list.of.titles">
+        <xsl:with-param name="titles" select="'equation'"/>
+        <xsl:with-param name="nodes" select=".//equation[title]"/>
+      </xsl:call-template>
+    </xsl:if>
   </xsl:variable>
 
-  <xsl:variable name="toc">
+  <xsl:if test="string($lots) != ''">
     <xsl:choose>
-      <xsl:when test="$manual.toc != ''">
-        <xsl:variable name="id">
-          <xsl:call-template name="object.id"/>
-        </xsl:variable>
-        <xsl:variable name="toc" select="document($manual.toc, .)"/>
-        <xsl:variable name="tocentry" select="$toc//tocentry[@linkend=$id]"/>
-        <xsl:if test="$tocentry and $tocentry/*">
-          <div class="toc">
-            <xsl:copy-of select="$toc.title"/>
-            <xsl:element name="{$toc.list.type}">
-              <xsl:call-template name="manual-toc">
-                <xsl:with-param name="tocentry" select="$tocentry/*[1]"/>
-              </xsl:call-template>
-            </xsl:element>
-          </div>
-        </xsl:if>
+      <xsl:when test="$chunk.tocs.and.lots != 0 and not(parent::*)">
+        <xsl:call-template name="write.chunk">
+          <xsl:with-param name="filename">
+            <xsl:apply-templates select="." mode="recursive-chunk-filename"/>
+            <xsl:text>-toc</xsl:text>
+            <xsl:value-of select="$html.ext"/>
+          </xsl:with-param>
+          <xsl:with-param name="content">
+            <xsl:call-template name="chunk-element-content">
+              <xsl:with-param name="prev" select="/foo"/>
+              <xsl:with-param name="next" select="/foo"/>
+              <xsl:with-param name="nav.context" select="'toc'"/>
+              <xsl:with-param name="content">
+                <h1>
+                  <xsl:apply-templates select="." mode="object.title.markup"/>
+                </h1>
+                <xsl:copy-of select="$lots"/>
+              </xsl:with-param>
+            </xsl:call-template>
+          </xsl:with-param>
+          <xsl:with-param name="quiet" select="$chunk.quietly"/>
+        </xsl:call-template>
       </xsl:when>
       <xsl:otherwise>
-        <xsl:variable name="nodes" select="part|reference
-                                           |preface|chapter|appendix
-                                           |article
-                                           |bibliography|glossary|index
-                                           |refentry
-                                           |bridgehead"/>
-        <xsl:if test="$nodes">
-          <div class="toc">
-            <xsl:copy-of select="$toc.title"/>
-            <xsl:element name="{$toc.list.type}">
-              <xsl:apply-templates select="$nodes" mode="toc">
-                <xsl:with-param name="toc-context" select="$toc-context"/>
-              </xsl:apply-templates>
-            </xsl:element>
-          </div>
-        </xsl:if>
+        <xsl:copy-of select="$lots"/>
       </xsl:otherwise>
     </xsl:choose>
-  </xsl:variable>
-
-  <xsl:choose>
-    <xsl:when test="$chunk.tocs.and.lots != 0">
-      <xsl:call-template name="write.chunk">
-        <xsl:with-param name="filename">
-          <xsl:apply-templates select="." mode="chunk-filename"/>
-          <xsl:text>-toc.html</xsl:text>
-        </xsl:with-param>
-        <xsl:with-param name="content">
-          <xsl:call-template name="chunk-element-content">
-            <xsl:with-param name="prev" select="/foo"/>
-            <xsl:with-param name="next" select="/foo"/>
-            <xsl:with-param name="content">
-              <xsl:copy-of select="$toc"/>
-            </xsl:with-param>
-          </xsl:call-template>
-        </xsl:with-param>
-        <xsl:with-param name="quiet" select="$chunk.quietly"/>
-      </xsl:call-template>
-    </xsl:when>
-    <xsl:otherwise>
-      <xsl:copy-of select="$toc"/>
-    </xsl:otherwise>
-  </xsl:choose>
+  </xsl:if>
 </xsl:template>
 
 <!-- ==================================================================== -->
index 107b2f23e3c1705c3405472f82633e7fac8824a9..4ad843669ead8c25fceeb0db9a852553333a2c62 100644 (file)
 
     <xsl:call-template name="article.titlepage"/>
 
-    <xsl:variable name="toc.params">
-      <xsl:call-template name="find.path.params">
-        <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
-      </xsl:call-template>
-    </xsl:variable>
-    <xsl:if test="contains($toc.params, 'toc')">
-      <xsl:call-template name="component.toc"/>
-    </xsl:if>
+    <xsl:call-template name="make.lots">
+      <xsl:with-param name="toc.params">
+        <xsl:call-template name="find.path.params">
+          <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+        </xsl:call-template>
+      </xsl:with-param>
+      <xsl:with-param name="toc">
+        <xsl:call-template name="component.toc"/>
+      </xsl:with-param>
+    </xsl:call-template>
+
     <xsl:apply-templates/>
     <xsl:call-template name="process.footnotes"/>
   </div>
index 6e5270e257ecace36843e5c8723ca4cf2c3176dd..a25f38bb2f9ce2cd71605822ef8fbf24c57dc426 100644 (file)
 
     <xsl:call-template name="set.titlepage"/>
 
-    <xsl:variable name="toc.params">
-      <xsl:call-template name="find.path.params">
-        <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
-      </xsl:call-template>
-    </xsl:variable>
-    <xsl:if test="contains($toc.params, 'toc')">
-      <xsl:call-template name="set.toc"/>
-    </xsl:if>
+    <xsl:call-template name="make.lots">
+      <xsl:with-param name="toc.params">
+        <xsl:call-template name="find.path.params">
+          <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+        </xsl:call-template>
+      </xsl:with-param>
+      <xsl:with-param name="toc">
+        <xsl:call-template name="set.toc"/>
+      </xsl:with-param>
+    </xsl:call-template>
+
     <xsl:apply-templates/>
   </div>
 </xsl:template>
     </xsl:if>
 
     <xsl:call-template name="book.titlepage"/>
-    <xsl:apply-templates select="dedication" mode="dedication"/>
-
-    <xsl:variable name="toc.params">
-      <xsl:call-template name="find.path.params">
-        <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
-      </xsl:call-template>
-    </xsl:variable>
 
-    <xsl:if test="contains($toc.params, 'toc')">
-      <xsl:call-template name="division.toc"/>
-    </xsl:if>
-
-    <xsl:if test="contains($toc.params, 'figure')">
-      <xsl:call-template name="list.of.titles">
-        <xsl:with-param name="titles" select="'figure'"/>
-        <xsl:with-param name="nodes" select=".//figure"/>
-      </xsl:call-template>
-    </xsl:if>
-
-    <xsl:if test="contains($toc.params, 'table')">
-      <xsl:call-template name="list.of.titles">
-        <xsl:with-param name="titles" select="'table'"/>
-        <xsl:with-param name="nodes" select=".//table"/>
-      </xsl:call-template>
-    </xsl:if>
-
-    <xsl:if test="contains($toc.params, 'example')">
-      <xsl:call-template name="list.of.titles">
-        <xsl:with-param name="titles" select="'example'"/>
-        <xsl:with-param name="nodes" select=".//example"/>
-      </xsl:call-template>
-    </xsl:if>
+    <xsl:apply-templates select="dedication" mode="dedication"/>
 
-    <xsl:if test="contains($toc.params, 'equation')">
-      <xsl:call-template name="list.of.titles">
-        <xsl:with-param name="titles" select="'equation'"/>
-        <xsl:with-param name="nodes" select=".//equation[title]"/>
-      </xsl:call-template>
-    </xsl:if>
+    <xsl:call-template name="make.lots">
+      <xsl:with-param name="toc.params">
+        <xsl:call-template name="find.path.params">
+          <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+        </xsl:call-template>
+      </xsl:with-param>
+      <xsl:with-param name="toc">
+        <xsl:call-template name="division.toc"/>
+      </xsl:with-param>
+    </xsl:call-template>
 
     <xsl:apply-templates/>
   </div>