]> granicus.if.org Git - docbook-dsssl/commitdiff
Replace generate.*.toc and generate.*.lot with single generate.toc parameter.
authorNorman Walsh <ndw@nwalsh.com>
Mon, 18 Mar 2002 13:39:43 +0000 (13:39 +0000)
committerNorman Walsh <ndw@nwalsh.com>
Mon, 18 Mar 2002 13:39:43 +0000 (13:39 +0000)
40 files changed:
xsl/common/common.xsl
xsl/fo/Makefile
xsl/fo/component.xsl
xsl/fo/division.xsl
xsl/fo/fop.xsl
xsl/fo/param.ent
xsl/fo/param.xweb
xsl/fo/xep.xsl
xsl/html/Makefile
xsl/html/autotoc.xsl
xsl/html/component.xsl
xsl/html/division.xsl
xsl/html/param.ent
xsl/html/param.xweb
xsl/html/qandaset.xsl
xsl/html/refentry.xsl
xsl/html/sections.xsl
xsl/lib/lib.xsl
xsl/params/generate.appendix.toc.xml [deleted file]
xsl/params/generate.article.toc.xml [deleted file]
xsl/params/generate.book.equation.lot.xml [deleted file]
xsl/params/generate.book.example.lot.xml [deleted file]
xsl/params/generate.book.figure.lot.xml [deleted file]
xsl/params/generate.book.table.lot.xml [deleted file]
xsl/params/generate.book.toc.xml [deleted file]
xsl/params/generate.chapter.toc.xml [deleted file]
xsl/params/generate.component.toc.xml [deleted file]
xsl/params/generate.division.equation.lot.xml [deleted file]
xsl/params/generate.division.example.lot.xml [deleted file]
xsl/params/generate.division.figure.lot.xml [deleted file]
xsl/params/generate.division.table.lot.xml [deleted file]
xsl/params/generate.division.toc.xml [deleted file]
xsl/params/generate.part.toc.xml [deleted file]
xsl/params/generate.preface.toc.xml [deleted file]
xsl/params/generate.qandadiv.toc.xml [deleted file]
xsl/params/generate.qandaset.toc.xml [deleted file]
xsl/params/generate.reference.toc.xml [deleted file]
xsl/params/generate.section.toc.xml [deleted file]
xsl/params/generate.set.toc.xml [deleted file]
xsl/params/generate.toc.xml [new file with mode: 0644]

index 9b13713aab4b369e7b9480c0971dca227bdc0a2f..04b869b704db7bcf38a23134aa517280b2e20824 100644 (file)
@@ -1353,5 +1353,47 @@ year range is <quote>1991-1992</quote> but discretely it's
   </xsl:choose>
 </xsl:template>
 
+<!-- ====================================================================== -->
+
+<doc:template name="find.path.params" xmlns="">
+<refpurpose>Search in a table for the "best" match for the node</refpurpose>
+
+<refdescription>
+<para>This template searches in a table for the value that most-closely
+(in the typical best-match sense of XSLT) matches the current (element)
+node location.</para>
+</refdescription>
+</doc:template>
+
+<xsl:template name="find.path.params">
+  <xsl:param name="node" select="."/>
+  <xsl:param name="table" select="''"/>
+  <xsl:param name="location">
+    <xsl:call-template name="xpath.location">
+      <xsl:with-param name="node" select="$node"/>
+    </xsl:call-template>
+  </xsl:param>
+
+  <xsl:variable name="value">
+    <xsl:call-template name="lookup.key">
+      <xsl:with-param name="key" select="$location"/>
+      <xsl:with-param name="table" select="$table"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:choose>
+    <xsl:when test="$value != ''">
+      <xsl:value-of select="$value"/>
+    </xsl:when>
+    <xsl:when test="contains($location, '/')">
+      <xsl:call-template name="find.path.params">
+        <xsl:with-param name="node" select="$node"/>
+        <xsl:with-param name="table" select="$table"/>
+        <xsl:with-param name="location" select="substring-after($location, '/')"/>
+      </xsl:call-template>
+    </xsl:when>
+  </xsl:choose>
+</xsl:template>
+
 </xsl:stylesheet>
 
index 8b8952cdc22c9c123ab9ade90543f9a033ffce8d..ed0b684186a298bbaf4e58998f4711b0022ca681 100644 (file)
@@ -1,21 +1,29 @@
 XSLT=../../cvstools/saxon
 XJPARSE=../../cvstools/xjparse
 
+PARAMPROF=.param.profiled
+PARAMSTRIP=.param.stripped
+
 include Makefile.param
 
 all: titlepage.templates.xsl param.xsl profile-docbook.xsl
 
 param.html: param.xml
-       ../../cvstools/paramchk -m Makefile.param $<
        $(XSLT) $< ../docsrc/lrefentry.xsl $@
 
 param.xml: param.xweb $(PARAMS)
        ../../cvstools/paramchk -m Makefile.param $<
-       $(XSLT) $< ../../litprog/wdocbook.xsl $@
+       $(XSLT) $< ../profiling/profile.xsl $(PARAMPROF) profile.condition=fo
+       $(XSLT) $(PARAMPROF) ../profiling/strip-attributes.xsl $(PARAMSTRIP) attributes=condition
+       $(XSLT) $(PARAMSTRIP) ../../litprog/wdocbook.xsl $@
+       $(RM) $(PARAMPROF) $(PARAMSTRIP)
 
 param.xsl: param.xweb $(PARAMS)
        ../../cvstools/paramchk -m Makefile.param $<
-       $(XSLT) $< ../../litprog/xtangle.xsl $@
+       $(XSLT) $< ../profiling/profile.xsl $(PARAMPROF) profile.condition=fo
+       $(XSLT) $(PARAMPROF) ../profiling/strip-attributes.xsl $(PARAMSTRIP) attributes=condition
+       $(XSLT) $(PARAMSTRIP) ../../litprog/xtangle.xsl $@
+       $(RM) $(PARAMPROF) $(PARAMSTRIP)
 
 titlepage.templates.xsl: titlepage.templates.xml ../template/titlepage.xsl
        $(XSLT) $< ../template/titlepage.xsl $@
@@ -25,3 +33,10 @@ Makefile.param:
 
 profile-docbook.xsl:
        $(XSLT) docbook.xsl ../profiling/xsl2profile.xsl $@
+
+clean:
+       $(RM) param.xml param.html param.xsl \
+              profile-docbook.xsl \
+              titlepage.templates.xsl
+       $(RM) Makefile.param
+       echo "# foo" > Makefile.param
index 2814150169995603f7c423c8a7c8cc9a66876990..cac8a4a2877fa9f72b97dd01dc50a7bca7638032 100644 (file)
     <fo:flow flow-name="xsl-region-body">
       <xsl:call-template name="component.separator"/>
       <xsl:call-template name="preface.titlepage"/>
-      <xsl:if test="$generate.component.toc">
+
+      <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:apply-templates/>
     </fo:flow>
   </fo:page-sequence>
     <fo:flow flow-name="xsl-region-body">
       <xsl:call-template name="component.separator"/>
       <xsl:call-template name="chapter.titlepage"/>
-      <xsl:if test="$generate.component.toc">
+
+      <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:apply-templates/>
     <fo:flow flow-name="xsl-region-body">
       <xsl:call-template name="component.separator"/>
       <xsl:call-template name="appendix.titlepage"/>
-      <xsl:if test="$generate.component.toc">
+
+      <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:apply-templates/>
 
     <fo:flow flow-name="xsl-region-body">
       <xsl:call-template name="article.titlepage"/>
-      <xsl:if test="$generate.component.toc">
+
+      <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:apply-templates/>
index 8817c4bca2737adf0a735a9ff429c18657e436d7..2512818d6864346934e6d68cd3a0843646ae2916 100644 (file)
     </fo:page-sequence>
   </xsl:if>
 
-  <xsl:if test="$generate.set.toc != '0'">
+  <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')">
     <fo:page-sequence hyphenate="{$hyphenate}"
                       format="i"
                       master-reference="{$master-reference}">
 
   <xsl:apply-templates select="dedication" mode="dedication"/>
 
-  <xsl:if test="$generate.book.toc != '0'">
+  <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')">
     <fo:page-sequence hyphenate="{$hyphenate}"
                       format="i"
                       master-reference="{$master-reference}">
     </fo:page-sequence>
   </xsl:if>
 
-  <xsl:if test="$generate.book.figure.lot != '0' and .//figure">
+  <xsl:if test="contains($toc.params,'figure') and .//figure">
     <fo:page-sequence hyphenate="{$hyphenate}"
                       format="i"
                       master-reference="{$master-reference}">
     </fo:page-sequence>
   </xsl:if>
 
-  <xsl:if test="$generate.book.table.lot != '0' and .//table">
+  <xsl:if test="contains($toc.params,'table') and .//table">
     <fo:page-sequence hyphenate="{$hyphenate}"
                       format="i"
                       master-reference="{$master-reference}">
     </fo:page-sequence>
   </xsl:if>
 
-  <xsl:if test="$generate.book.example.lot != '0' and .//example">
+  <xsl:if test="contains($toc.params,'example') and .//example">
     <fo:page-sequence hyphenate="{$hyphenate}"
                       format="i"
                       master-reference="{$master-reference}">
     </fo:page-sequence>
   </xsl:if>
 
-  <xsl:if test="$generate.book.equation.lot != '0' and .//equation">
+  <xsl:if test="contains($toc.params,'equation') and .//equation">
     <fo:page-sequence hyphenate="{$hyphenate}"
                       format="i"
                       master-reference="{$master-reference}">
index 59fd23521e3ca780577daf8fad731762e489dc1a..1cebdd3ed2eed147cc28487cc8fafeec77832ed7 100644 (file)
@@ -56,8 +56,13 @@ translates characters with code>255 back to ASCII.
           <xsl:value-of select="translate($bookmark-label, $a-dia, $a-asc)"/>
         </fox:label>
       </fox:outline>
-      <xsl:if test="(local-name(.) = 'set' and $generate.set.toc != 0)
-                    or (local-name(.) = 'book' and $generate.book.toc != 0)">
+
+      <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')">
         <fox:outline internal-destination="toc...{$id}">
           <fox:label>
             <xsl:call-template name="gentext">
index cb91ce2f7fa41fd25d176048229091b115e113d9..ac7f23933317ca07d5c017e25bde36a850f7145e 100644 (file)
 <!ENTITY funcsynopsis.decoration SYSTEM "../params/funcsynopsis.decoration.xml">
 <!ENTITY funcsynopsis.style SYSTEM "../params/funcsynopsis.style.xml">
 <!ENTITY function.parens SYSTEM "../params/function.parens.xml">
-<!ENTITY generate.book.equation.lot SYSTEM "../params/generate.book.equation.lot.xml">
-<!ENTITY generate.book.example.lot SYSTEM "../params/generate.book.example.lot.xml">
-<!ENTITY generate.book.figure.lot SYSTEM "../params/generate.book.figure.lot.xml">
-<!ENTITY generate.book.table.lot SYSTEM "../params/generate.book.table.lot.xml">
-<!ENTITY generate.book.toc SYSTEM "../params/generate.book.toc.xml">
-<!ENTITY generate.component.toc SYSTEM "../params/generate.component.toc.xml">
-<!ENTITY generate.division.equation.lot SYSTEM "../params/generate.division.equation.lot.xml">
-<!ENTITY generate.division.example.lot SYSTEM "../params/generate.division.example.lot.xml">
-<!ENTITY generate.division.figure.lot SYSTEM "../params/generate.division.figure.lot.xml">
-<!ENTITY generate.division.table.lot SYSTEM "../params/generate.division.table.lot.xml">
-<!ENTITY generate.division.toc SYSTEM "../params/generate.division.toc.xml">
 <!ENTITY generate.index SYSTEM "../params/generate.index.xml">
-<!ENTITY generate.set.toc SYSTEM "../params/generate.set.toc.xml">
+<!ENTITY generate.toc SYSTEM "../params/generate.toc.xml">
 <!ENTITY glossary.collection SYSTEM "../params/glossary.collection.xml">
 <!ENTITY glossterm.auto.link SYSTEM "../params/glossterm.auto.link.xml">
 <!ENTITY graphic.default.extension SYSTEM "../params/graphic.default.extension.xml">
index d93d484a4d3cf02b9c4f198af4b9fa8f3e095352..2a9144cef976824d4856c73b404cd077b8f7820d 100644 (file)
@@ -85,22 +85,19 @@ to be incomplete. Don't forget to read the source, too :-)</para>
 &autotoc.label.separator;
 &process.empty.source.toc;
 &process.source.toc;
-&generate.book.equation.lot;
-&generate.book.example.lot;
-&generate.book.figure.lot;
-&generate.book.table.lot;
-&generate.book.toc;
-&generate.set.toc;
-&generate.component.toc;
-&generate.division.equation.lot;
-&generate.division.example.lot;
-&generate.division.figure.lot;
-&generate.division.table.lot;
-&generate.division.toc;
+&generate.toc;
 &generate.index;
 &toc.section.depth;
 &toc.indent.width;
 &toc.margin.properties;
+
+<!--
+annotate.toc;
+bridgehead.in.toc;
+manual.toc;
+generate.section.toc.level;
+-->
+
 </reference>
 
 <reference><title>Processor Extensions</title>
@@ -416,19 +413,8 @@ around all these parameters.</para>
 <src:fragref linkend="funcsynopsis.decoration.frag"/>
 <src:fragref linkend="funcsynopsis.style.frag"/>
 <src:fragref linkend="function.parens.frag"/>
-<src:fragref linkend="generate.book.equation.lot.frag"/>
-<src:fragref linkend="generate.book.example.lot.frag"/>
-<src:fragref linkend="generate.book.figure.lot.frag"/>
-<src:fragref linkend="generate.book.table.lot.frag"/>
-<src:fragref linkend="generate.book.toc.frag"/>
-<src:fragref linkend="generate.component.toc.frag"/>
-<src:fragref linkend="generate.division.equation.lot.frag"/>
-<src:fragref linkend="generate.division.example.lot.frag"/>
-<src:fragref linkend="generate.division.figure.lot.frag"/>
-<src:fragref linkend="generate.division.table.lot.frag"/>
-<src:fragref linkend="generate.division.toc.frag"/>
 <src:fragref linkend="generate.index.frag"/>
-<src:fragref linkend="generate.set.toc.frag"/>
+<src:fragref linkend="generate.toc.frag"/>
 <src:fragref linkend="glossary.collection.frag"/>
 <src:fragref linkend="glossterm.auto.link.frag"/>
 <src:fragref linkend="graphic.default.extension.frag"/>
index 4bcb6eebec6441399c782e0df116099f12985339..391bbff7a4854265883efcbf9c4111edfc87ab5b 100644 (file)
           <xsl:value-of select="translate($bookmark-label, $a-dia, $a-asc)"/>
         </rx:bookmark-label>
       </rx:bookmark>
-      <xsl:if test="(local-name(.) = 'set' and $generate.set.toc != 0)
-                    or (local-name(.) = 'book' and $generate.book.toc != 0)">
+
+      <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')">
         <rx:bookmark internal-destination="toc...{$id}">
           <rx:bookmark-label>
             <xsl:call-template name="gentext">
index 1f8b4a00520ce38ba60ba15a911bb46a642e556d..cb7d7310f44760b5594a21d353576d5d9539e5fb 100644 (file)
@@ -1,6 +1,9 @@
 XSLT=../../cvstools/saxon
 XJPARSE=../../cvstools/xjparse
 
+PARAMPROF=.param.profiled
+PARAMSTRIP=.param.stripped
+
 include Makefile.param
 
 all: titlepage.templates.xsl param.xsl \
@@ -10,17 +13,22 @@ xml: param.xml
 
 html: param.html
 
-param.html: param.xml
-       ../../cvstools/paramchk -m Makefile.param $<
+param.html: param.xml titlepage.templates.xsl
        $(XSLT) $< ../docsrc/lrefentry.xsl $@
 
 param.xml: param.xweb $(PARAMS)
        ../../cvstools/paramchk -m Makefile.param $<
-       $(XSLT) $< ../../litprog/wdocbook.xsl $@
+       $(XSLT) $< ../profiling/profile.xsl $(PARAMPROF) profile.condition=html
+       $(XSLT) $(PARAMPROF) ../profiling/strip-attributes.xsl $(PARAMSTRIP) attributes=condition
+       $(XSLT) $(PARAMSTRIP) ../../litprog/wdocbook.xsl $@
+       $(RM) $(PARAMPROF) $(PARAMSTRIP)
 
 param.xsl: param.xweb $(PARAMS)
        ../../cvstools/paramchk -m Makefile.param $<
-       $(XSLT) $< ../../litprog/xtangle.xsl $@
+       $(XSLT) $< ../profiling/profile.xsl $(PARAMPROF) profile.condition=html
+       $(XSLT) $(PARAMPROF) ../profiling/strip-attributes.xsl $(PARAMSTRIP) attributes=condition
+       $(XSLT) $(PARAMSTRIP) ../../litprog/xtangle.xsl $@
+       $(RM) $(PARAMPROF) $(PARAMSTRIP)
 
 titlepage.templates.xsl: titlepage.templates.xml ../template/titlepage.xsl
        $(XSLT) $< ../template/titlepage.xsl $@
@@ -37,3 +45,10 @@ profile-chunk.xsl:
 
 profile-onechunk.xsl:
        $(XSLT) onechunk.xsl ../profiling/xsl2profile.xsl $@
+
+clean:
+       $(RM) param.xml param.html param.xsl \
+              profile-docbook.xsl profile-chunk.xsl profile-onechunk.xsl \
+              titlepage.templates.xsl
+       $(RM) Makefile.param
+       echo "# foo" > Makefile.param
index 08d54eb49adcd9c4b8b0d558a450658566e51f3e..9f48ec52d4bf255fe18286273dabd73952328894 100644 (file)
 </xsl:template>
 
 <xsl:template name="division.toc">
-  <xsl:if test="$generate.division.toc != 0">
-    <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: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="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:element>
-          </div>
-        </xsl:if>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:if>
+  <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
+                                         |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:element>
+        </div>
+      </xsl:if>
+    </xsl:otherwise>
+  </xsl:choose>
 </xsl:template>
 
 <xsl:template name="component.toc">
-  <xsl:if test="$generate.component.toc != 0">
-    <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: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
-                                           |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:element>
-          </div>
-        </xsl:if>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:if>
+  <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
+                                         |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:element>
+        </div>
+      </xsl:if>
+    </xsl:otherwise>
+  </xsl:choose>
 </xsl:template>
 
 <xsl:template name="section.toc">
   </xsl:if>
 </xsl:template>
 
+<!-- ==================================================================== -->
+
+<xsl:template name="list.of.titles">
+  <xsl:param name="titles" select="'table'"/>
+  <xsl:param name="nodes" select=".//table"/>
+
+  <xsl:if test="$nodes">
+    <div class="list-of-{$titles}s">
+      <p>
+        <b>
+          <xsl:call-template name="gentext">
+            <xsl:with-param name="key">
+              <xsl:choose>
+                <xsl:when test="$titles='table'">ListofTables</xsl:when>
+                <xsl:when test="$titles='figure'">ListofFigures</xsl:when>
+                <xsl:when test="$titles='equation'">ListofEquations</xsl:when>
+                <xsl:when test="$titles='example'">ListofExamples</xsl:when>
+                <xsl:otherwise>ListofUnknowns</xsl:otherwise>
+              </xsl:choose>
+            </xsl:with-param>
+          </xsl:call-template>
+        </b>
+      </p>
+
+      <xsl:element name="{$toc.list.type}">
+        <xsl:apply-templates select="$nodes" mode="toc"/>
+      </xsl:element>
+    </div>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template match="figure|table|example|equation" mode="toc">
+  <xsl:element name="{$toc.listitem.type}">
+    <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>
+    <a>
+      <xsl:attribute name="href">
+        <xsl:call-template name="href.target"/>
+      </xsl:attribute>
+      <xsl:apply-templates select="." mode="title.markup"/>
+    </a>
+  </xsl:element>
+</xsl:template>
+
 </xsl:stylesheet>
 
index a7ca1a4130ef56549c94a3bfde2c79af6dd2c4b7..107b2f23e3c1705c3405472f82633e7fac8824a9 100644 (file)
 
     <xsl:call-template name="component.separator"/>
     <xsl:call-template name="preface.titlepage"/>
-    <xsl:if test="$generate.preface.toc != '0'">
+
+    <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:apply-templates/>
 
     <xsl:call-template name="component.separator"/>
     <xsl:call-template name="chapter.titlepage"/>
-    <xsl:if test="$generate.chapter.toc != '0'">
+
+    <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:apply-templates/>
 
     <xsl:call-template name="component.separator"/>
     <xsl:call-template name="appendix.titlepage"/>
-    <xsl:if test="$generate.appendix.toc != '0'">
+
+    <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:apply-templates/>
     </xsl:if>
 
     <xsl:call-template name="article.titlepage"/>
-    <xsl:if test="$generate.article.toc != '0'">
+
+    <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:apply-templates/>
index a648ad9fa74c7bdc2491bc39908f24178c652134..6e5270e257ecace36843e5c8723ca4cf2c3176dd 100644 (file)
     </xsl:if>
 
     <xsl:call-template name="set.titlepage"/>
-    <xsl:if test="$generate.set.toc != '0'">
+
+    <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:apply-templates/>
 
     <xsl:call-template name="book.titlepage"/>
     <xsl:apply-templates select="dedication" mode="dedication"/>
-    <xsl:if test="$generate.book.toc != '0'">
+
+    <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: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:apply-templates/>
   </div>
 </xsl:template>
     </xsl:if>
 
     <xsl:call-template name="part.titlepage"/>
-    <xsl:if test="not(partintro) and $generate.part.toc != '0'">
+
+    <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="not(partintro) and contains($toc.params, 'toc')">
       <xsl:call-template name="division.toc"/>
     </xsl:if>
     <xsl:apply-templates/>
 
     <xsl:call-template name="partintro.titlepage"/>
     <xsl:apply-templates/>
-    <xsl:if test="$generate.part.toc != '0'">
+
+    <xsl:variable name="toc.params">
+      <xsl:call-template name="find.path.params">
+        <xsl:with-param name="node" select="parent::*"/>
+        <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
+      </xsl:call-template>
+    </xsl:variable>
+    <xsl:if test="contains($toc.params, 'toc')">
       <!-- not ancestor::part because partintro appears in reference -->
       <xsl:apply-templates select="parent::*" mode="make.part.toc"/>
     </xsl:if>
index 719fb0579b753f98623cb9a0d30ce3be8c1e146e..52d30ffb38819b869c84c49377eceb71dc1546e9 100644 (file)
 <!ENTITY funcsynopsis.decoration SYSTEM "../params/funcsynopsis.decoration.xml">
 <!ENTITY funcsynopsis.style SYSTEM "../params/funcsynopsis.style.xml">
 <!ENTITY function.parens SYSTEM "../params/function.parens.xml">
-<!ENTITY generate.appendix.toc SYSTEM "../params/generate.appendix.toc.xml">
-<!ENTITY generate.article.toc SYSTEM "../params/generate.article.toc.xml">
-<!ENTITY generate.book.toc SYSTEM "../params/generate.book.toc.xml">
-<!ENTITY generate.chapter.toc SYSTEM "../params/generate.chapter.toc.xml">
-<!ENTITY generate.component.toc SYSTEM "../params/generate.component.toc.xml">
-<!ENTITY generate.division.toc SYSTEM "../params/generate.division.toc.xml">
 <!ENTITY generate.id.attributes SYSTEM "../params/generate.id.attributes.xml">
 <!ENTITY generate.index SYSTEM "../params/generate.index.xml">
 <!ENTITY generate.legalnotice.link SYSTEM "../params/generate.legalnotice.link.xml">
-<!ENTITY generate.part.toc SYSTEM "../params/generate.part.toc.xml">
-<!ENTITY generate.preface.toc SYSTEM "../params/generate.preface.toc.xml">
-<!ENTITY generate.qandadiv.toc SYSTEM "../params/generate.qandadiv.toc.xml">
-<!ENTITY generate.qandaset.toc SYSTEM "../params/generate.qandaset.toc.xml">
-<!ENTITY generate.reference.toc SYSTEM "../params/generate.reference.toc.xml">
-<!ENTITY generate.section.toc SYSTEM "../params/generate.section.toc.xml">
 <!ENTITY generate.section.toc.level SYSTEM "../params/generate.section.toc.level.xml">
-<!ENTITY generate.set.toc SYSTEM "../params/generate.set.toc.xml">
+<!ENTITY generate.toc SYSTEM "../params/generate.toc.xml">
 <!ENTITY glossary.collection SYSTEM "../params/glossary.collection.xml">
 <!ENTITY glossterm.auto.link SYSTEM "../params/glossterm.auto.link.xml">
 <!ENTITY graphic.default.extension SYSTEM "../params/graphic.default.extension.xml">
index 9af05df075c9beb8fadc047b12fbe0c9aeff4e68..cf16198a468e88e9add98ea924230351f429713b 100644 (file)
@@ -88,27 +88,15 @@ to be incomplete. Don't forget to read the source, too :-)</para>
 <reference><title>ToC/LoT/Index Generation</title>
 &annotate.toc;
 &autotoc.label.separator;
-&generate.appendix.toc;
-&generate.article.toc;
-&generate.book.toc;
-&generate.chapter.toc;
-&generate.component.toc;
-&generate.division.toc;
-&generate.part.toc;
-&generate.preface.toc;
-&generate.qandadiv.toc;
-&generate.qandaset.toc;
-&generate.reference.toc;
-&generate.section.toc;
-&generate.set.toc;
-&generate.section.toc.level;
-&generate.index;
-&toc.list.type;
-&toc.section.depth;
 &process.source.toc;
 &process.empty.source.toc;
 &bridgehead.in.toc;
 &manual.toc;
+&toc.list.type;
+&toc.section.depth;
+&generate.toc;
+&generate.section.toc.level;
+&generate.index;
 </reference>
 
 <reference><title>Extensions</title>
@@ -357,23 +345,11 @@ around all these parameters.</para>
 <src:fragref linkend="funcsynopsis.decoration.frag"/>
 <src:fragref linkend="funcsynopsis.style.frag"/>
 <src:fragref linkend="function.parens.frag"/>
-<src:fragref linkend="generate.appendix.toc.frag"/>
-<src:fragref linkend="generate.article.toc.frag"/>
-<src:fragref linkend="generate.book.toc.frag"/>
-<src:fragref linkend="generate.chapter.toc.frag"/>
-<src:fragref linkend="generate.component.toc.frag"/>
-<src:fragref linkend="generate.division.toc.frag"/>
 <src:fragref linkend="generate.id.attributes.frag"/>
 <src:fragref linkend="generate.index.frag"/>
 <src:fragref linkend="generate.legalnotice.link.frag"/>
-<src:fragref linkend="generate.part.toc.frag"/>
-<src:fragref linkend="generate.preface.toc.frag"/>
-<src:fragref linkend="generate.qandadiv.toc.frag"/>
-<src:fragref linkend="generate.qandaset.toc.frag"/>
-<src:fragref linkend="generate.reference.toc.frag"/>
-<src:fragref linkend="generate.section.toc.frag"/>
 <src:fragref linkend="generate.section.toc.level.frag"/>
-<src:fragref linkend="generate.set.toc.frag"/>
+<src:fragref linkend="generate.toc.frag"/>
 <src:fragref linkend="glossary.collection.frag"/>
 <src:fragref linkend="glossterm.auto.link.frag"/>
 <src:fragref linkend="graphic.default.extension.frag"/>
index e46d1ef847caef1b5f915c9dcba1065c758cb375..792c39194c4e71d5963f295eadfef273c881e510 100644 (file)
     </xsl:call-template>
   </xsl:variable>
 
+  <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>
+
   <div class="{name(.)}">
     <xsl:apply-templates select="$title"/>
-    <xsl:if test="$generate.qandaset.toc != 0 and $toc != '0'">
+    <xsl:if test="contains($toc.params, 'toc') and $toc != '0'">
       <xsl:call-template name="process.qanda.toc"/>
     </xsl:if>
     <xsl:apply-templates select="$preamble"/>
       </td>
     </tr>
   </xsl:if>
-  <xsl:if test="$generate.qandadiv.toc != '0'">
+
+  <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')">
     <tr class="toc" colspan="2">
       <td align="left" valign="top" colspan="2">
         <xsl:call-template name="process.qanda.toc"/>
index 6ef6700e3726f26c253c29aa0196969124467201..9c2b9ee4061642e49d2d90ae115b7e463b642366 100644 (file)
       <xsl:with-param name="conditional" select="0"/>
     </xsl:call-template>
     <xsl:call-template name="reference.titlepage"/>
-    <xsl:if test="not(partintro) and $generate.reference.toc != '0'">
+
+    <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="not(partintro) and contains($toc.params, 'toc')">
       <xsl:call-template name="division.toc"/>
     </xsl:if>
     <xsl:apply-templates/>
index 3cbfbc8cf7aa1e9ea952a333ecc6d120a68c5211..d4f384e47880ac23294021741cbc2a75cb15d3a0 100644 (file)
 
   <div class="{name(.)}">
     <xsl:call-template name="section.titlepage"/>
-    <xsl:if test="($generate.section.toc != '0'
+
+    <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')
                    and $depth &lt;= $generate.section.toc.level)
                   or refentry">
       <xsl:call-template name="section.toc"/>
 <xsl:template match="sect1">
   <div class="{name(.)}">
     <xsl:call-template name="sect1.titlepage"/>
-    <xsl:if test="($generate.section.toc != '0'
+
+    <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')
                    and $generate.section.toc.level &gt;= 1)
                   or refentry">
       <xsl:call-template name="section.toc"/>
 <xsl:template match="sect2">
   <div class="{name(.)}">
     <xsl:call-template name="sect2.titlepage"/>
-    <xsl:if test="($generate.section.toc != '0'
+
+    <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')
                    and $generate.section.toc.level &gt;= 2)
                   or refentry">
       <xsl:call-template name="section.toc"/>
 <xsl:template match="sect3">
   <div class="{name(.)}">
     <xsl:call-template name="sect3.titlepage"/>
-    <xsl:if test="($generate.section.toc != '0'
+
+    <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')
                    and $generate.section.toc.level &gt;= 3)
                   or refentry">
       <xsl:call-template name="section.toc"/>
 <xsl:template match="sect4">
   <div class="{name(.)}">
     <xsl:call-template name="sect4.titlepage"/>
-    <xsl:if test="($generate.section.toc != '0'
+
+    <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')
                    and $generate.section.toc.level &gt;= 4)
                   or refentry">
       <xsl:call-template name="section.toc"/>
 <xsl:template match="sect5">
   <div class="{name(.)}">
     <xsl:call-template name="sect5.titlepage"/>
-    <xsl:if test="($generate.section.toc != '0'
+
+    <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')
                    and $generate.section.toc.level &gt;= 5)
                   or refentry">
       <xsl:call-template name="section.toc"/>
index 1dfbeba191a725a2d8be97dd29c74cd71c0b40c3..6b873fcf31e15ed7f4be43d67c53f95d209f42ed 100644 (file)
@@ -322,4 +322,78 @@ for example), the template may silently return erroneous results.</para>
   </xsl:choose>
 </xsl:template>
 
+<!-- ================================================================== -->
+
+<doc:template name="lookup.key" xmlns="">
+<refpurpose>Retrieve the value associated with a particular key in a table</refpurpose>
+<refdescription>
+<para>Given a table of space-delimited key/value pairs,
+the <function>lookup.key</function> template extracts the value associated
+with a particular key.</para>
+</refdescription>
+</doc:template>
+
+<xsl:template name="lookup.key">
+  <xsl:param name="key" select="''"/>
+  <xsl:param name="table" select="''"/>
+
+  <xsl:if test="contains($table, ' ')">
+    <xsl:choose>
+      <xsl:when test="substring-before($table, ' ') = $key">
+        <xsl:variable name="rest" select="substring-after($table, ' ')"/>
+        <xsl:choose>
+          <xsl:when test="contains($rest, ' ')">
+            <xsl:value-of select="substring-before($rest, ' ')"/>
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:value-of select="$rest"/>
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:call-template name="lookup.key">
+          <xsl:with-param name="key" select="$key"/>
+          <xsl:with-param name="table"
+                            select="substring-after(substring-after($table,' '), ' ')"/>
+        </xsl:call-template>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:if>
+</xsl:template>
+
+<!-- ================================================================== -->
+
+<doc:template name="xpath.location" xmlns="">
+<refpurpose>Calculate the XPath child-sequence to the current node</refpurpose>
+<refdescription>
+<para>The <function>xpath.location</function> template calculates the
+absolute path from the root of the tree to the current element node.
+</para>
+</refdescription>
+</doc:template>
+
+<xsl:template name="xpath.location">
+  <xsl:param name="node" select="."/>
+  <xsl:param name="path" select="''"/>
+
+  <xsl:variable name="next.path">
+    <xsl:value-of select="local-name($node)"/>
+    <xsl:if test="$path != ''">/</xsl:if>
+    <xsl:value-of select="$path"/>
+  </xsl:variable>
+
+  <xsl:choose>
+    <xsl:when test="$node/parent::*">
+      <xsl:call-template name="xpath.location">
+        <xsl:with-param name="node" select="$node/parent::*"/>
+        <xsl:with-param name="path" select="$next.path"/>
+      </xsl:call-template>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:text>/</xsl:text>
+      <xsl:value-of select="$next.path"/>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
 </xsl:stylesheet>
diff --git a/xsl/params/generate.appendix.toc.xml b/xsl/params/generate.appendix.toc.xml
deleted file mode 100644 (file)
index b0bf21f..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<refentry id="generate.appendix.toc">
-<refmeta>
-<refentrytitle>generate.appendix.toc</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.appendix.toc</refname>
-<refpurpose>Specify if a table of contents is required for an appendix</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.appendix.toc.frag'><xsl:param name="generate.appendix.toc" select="1"/></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-
-<para>Specify whether you want a table of contents in each appendix. </para>
-
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.article.toc.xml b/xsl/params/generate.article.toc.xml
deleted file mode 100644 (file)
index a93d8f7..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<refentry id="generate.article.toc">
-<refmeta>
-<refentrytitle>generate.article.toc</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.article.toc</refname>
-<refpurpose>Specify if a toc is wanted for an article.</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.article.toc.frag'><xsl:param name="generate.article.toc" select="1"/></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-
-<para>Specify whether a table of contents is required for an article.</para>
-
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.book.equation.lot.xml b/xsl/params/generate.book.equation.lot.xml
deleted file mode 100644 (file)
index 6f8a831..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<refentry id="generate.book.equation.lot">
-<refmeta>
-<refentrytitle>generate.book.equation.lot</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.book.equation.lot</refname>
-<refpurpose>Should a lot be generated for equations?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.book.equation.lot.frag'><xsl:param name="generate.book.equation.lot" select="1"/></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-<para>Specify if  list of equations, like a table of contents, is required.</para>
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.book.example.lot.xml b/xsl/params/generate.book.example.lot.xml
deleted file mode 100644 (file)
index f2d1529..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<refentry id="generate.book.example.lot">
-<refmeta>
-<refentrytitle>generate.book.example.lot</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.book.example.lot</refname>
-<refpurpose>Is a list of equations required?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.book.example.lot.frag'><xsl:param name="generate.book.example.lot" select="1"/></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-<para>Specify if a list of examples is required, similar to a table of contents but for examples.</para>
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.book.figure.lot.xml b/xsl/params/generate.book.figure.lot.xml
deleted file mode 100644 (file)
index fb664de..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<refentry id="generate.book.figure.lot">
-<refmeta>
-<refentrytitle>generate.book.figure.lot</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.book.figure.lot</refname>
-<refpurpose>Is a list of figures required for book?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.book.figure.lot.frag'><xsl:param name="generate.book.figure.lot" select="1"/></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-<para>Specify if a list of figures is required, similar to a table of contents but for figures.</para>
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.book.table.lot.xml b/xsl/params/generate.book.table.lot.xml
deleted file mode 100644 (file)
index 515f2f5..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<refentry id="generate.book.table.lot">
-<refmeta>
-<refentrytitle>generate.book.table.lot</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.book.table.lot</refname>
-<refpurpose>Do you want a list of tables in a book?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.book.table.lot.frag'><xsl:param name="generate.book.table.lot" select="1"/></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-<para>Specify if a list of tables is required, similar to a table of contents, but for all the tables in the book</para>
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.book.toc.xml b/xsl/params/generate.book.toc.xml
deleted file mode 100644 (file)
index 791c2be..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<refentry id="generate.book.toc">
-<refmeta>
-<refentrytitle>generate.book.toc</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.book.toc</refname>
-<refpurpose>Do you want a table of contents in the book?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.book.toc.frag'><xsl:param name="generate.book.toc" select="1"/></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-
-<para>Specify if a table of contents is required in the book.</para>
-
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.chapter.toc.xml b/xsl/params/generate.chapter.toc.xml
deleted file mode 100644 (file)
index 84c9a3b..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<refentry id="generate.chapter.toc">
-<refmeta>
-<refentrytitle>generate.chapter.toc</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.chapter.toc</refname>
-<refpurpose>Do you want a table of contents for chapters?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.chapter.toc.frag'><xsl:param name="generate.chapter.toc" select="1"/></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-
-<para>Specify if a table of contents should be generated for each chapter.</para>
-
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.component.toc.xml b/xsl/params/generate.component.toc.xml
deleted file mode 100644 (file)
index 6b9d056..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<refentry id="generate.component.toc">
-<refmeta>
-<refentrytitle>generate.component.toc</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.component.toc</refname>
-<refpurpose>Should TOCs be genereated in components (Chapters, Appendixes, etc.)?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.component.toc.frag'><xsl:param name="generate.component.toc" select="1"/></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-
-<para>If true (non-zero), they are.
-</para>
-
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.division.equation.lot.xml b/xsl/params/generate.division.equation.lot.xml
deleted file mode 100644 (file)
index 9ef8f6f..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<refentry id="generate.division.equation.lot">
-<refmeta>
-<refentrytitle>generate.division.equation.lot</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.division.equation.lot</refname>
-<refpurpose>Generate a list of titles for Equations?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.division.equation.lot.frag'><xsl:param name="generate.division.equation.lot" select="1"/></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-
-<para>If non-zero, a list of titles is generated for Equations.
-</para>
-
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.division.example.lot.xml b/xsl/params/generate.division.example.lot.xml
deleted file mode 100644 (file)
index 88e5998..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<refentry id="generate.division.example.lot">
-<refmeta>
-<refentrytitle>generate.division.example.lot</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.division.example.lot</refname>
-<refpurpose>Generate a list of titles for Examples?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.division.example.lot.frag'><xsl:param name="generate.division.example.lot" select="1"/></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-
-<para>If non-zero, a list of titles is generated for Examples.
-</para>
-
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.division.figure.lot.xml b/xsl/params/generate.division.figure.lot.xml
deleted file mode 100644 (file)
index 2671196..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<refentry id="generate.division.figure.lot">
-<refmeta>
-<refentrytitle>generate.division.figure.lot</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.division.figure.lot</refname>
-<refpurpose>Generate a list of titles for Figures?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.division.figure.lot.frag'><xsl:param name="generate.division.figure.lot" select="1"/></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-
-<para>If non-zero, a list of titles is generated for Figures.
-</para>
-
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.division.table.lot.xml b/xsl/params/generate.division.table.lot.xml
deleted file mode 100644 (file)
index dbfe553..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<refentry id="generate.division.table.lot">
-<refmeta>
-<refentrytitle>generate.division.table.lot</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.division.table.lot</refname>
-<refpurpose>Generate a list of titles for Tables?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.division.table.lot.frag'><xsl:param name="generate.division.table.lot" select="1"/></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-
-<para>If non-zero, a list of titles is generated for Tables.
-</para>
-
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.division.toc.xml b/xsl/params/generate.division.toc.xml
deleted file mode 100644 (file)
index 477bfd1..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<refentry id="generate.division.toc">
-<refmeta>
-<refentrytitle>generate.division.toc</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.division.toc</refname>
-<refpurpose>Should TOCs be genereated in divisions (Books, Parts, etc.)?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.division.toc.frag'><xsl:param name="generate.division.toc" select="1"/></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-
-<para>If true (non-zero), they are.
-</para>
-
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.part.toc.xml b/xsl/params/generate.part.toc.xml
deleted file mode 100644 (file)
index b223cbf..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<refentry id="generate.part.toc">
-<refmeta>
-<refentrytitle>generate.part.toc</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.part.toc</refname>
-<refpurpose>Do you want an index for each part?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.part.toc.frag'><xsl:param name="generate.part.toc" select="1"/></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-
-<para>Specify if an index should be generated for each part.
-</para>
-
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.preface.toc.xml b/xsl/params/generate.preface.toc.xml
deleted file mode 100644 (file)
index e8c9770..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<refentry id="generate.preface.toc">
-<refmeta>
-<refentrytitle>generate.preface.toc</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.preface.toc</refname>
-<refpurpose>Do you want a table of contents for the preface?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.preface.toc.frag'><xsl:param name="generate.preface.toc" select="1"/></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-
-<para>Specify if a table of contents should be generated for the preface</para>
-
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.qandadiv.toc.xml b/xsl/params/generate.qandadiv.toc.xml
deleted file mode 100644 (file)
index d4c4403..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<refentry id="generate.qandadiv.toc">
-<refmeta>
-<refentrytitle>generate.qandadiv.toc</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.qandadiv.toc</refname>
-<refpurpose>Is a Table of Contents created for QandADivs?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.qandadiv.toc.frag'><xsl:param name="generate.qandadiv.toc">0</xsl:param></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-
-<para>If true (non-zero), a ToC is constructed for QandADivs.
-</para>
-
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.qandaset.toc.xml b/xsl/params/generate.qandaset.toc.xml
deleted file mode 100644 (file)
index 6e6bd65..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<refentry id="generate.qandaset.toc">
-<refmeta>
-<refentrytitle>generate.qandaset.toc</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.qandaset.toc</refname>
-<refpurpose>Is a Table of Contents created for QandASets?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.qandaset.toc.frag'><xsl:param name="generate.qandaset.toc">1</xsl:param></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-
-<para>If true (non-zero), a ToC is constructed for QandASets.
-</para>
-
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.reference.toc.xml b/xsl/params/generate.reference.toc.xml
deleted file mode 100644 (file)
index 36cc030..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<refentry id="generate.reference.toc">
-<refmeta>
-<refentrytitle>generate.reference.toc</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.reference.toc</refname>
-<refpurpose>Do you want a list of references?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.reference.toc.frag'><xsl:param name="generate.reference.toc" select="1"/></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-
-<para>Specify if a list of references should be generated, similar to
-a table of contents, but for all <sgmltag>reference</sgmltag> elements.
-</para>
-
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.section.toc.xml b/xsl/params/generate.section.toc.xml
deleted file mode 100644 (file)
index ad74b1e..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<refentry id="generate.section.toc">
-<refmeta>
-<refentrytitle>generate.section.toc</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.section.toc</refname>
-<refpurpose>Generate TOCs inside Sections?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.section.toc.frag'><xsl:param name="generate.section.toc" select="1"/></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-
-<para>If non-zero, a Table of Contents will be generated inside section
-elements. Note that
-<parameter>generate.section.toc.level</parameter>
-may suppress some section TOCs.
-</para>
-
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.set.toc.xml b/xsl/params/generate.set.toc.xml
deleted file mode 100644 (file)
index e47c9da..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<refentry id="generate.set.toc">
-<refmeta>
-<refentrytitle>generate.set.toc</refentrytitle>
-<refmiscinfo role="type">boolean</refmiscinfo>
-</refmeta>
-<refnamediv>
-<refname>generate.set.toc</refname>
-<refpurpose>Do you want a table of contents in each set?</refpurpose>
-</refnamediv>
-
-<refsynopsisdiv>
-<src:fragment id='generate.set.toc.frag'><xsl:param name="generate.set.toc" select="1"/></src:fragment>
-</refsynopsisdiv>
-
-<refsect1><title>Description</title>
-
-<para>Specify if a table of contents is required in each set.</para>
-
-</refsect1>
-</refentry>
diff --git a/xsl/params/generate.toc.xml b/xsl/params/generate.toc.xml
new file mode 100644 (file)
index 0000000..06d5bfe
--- /dev/null
@@ -0,0 +1,78 @@
+<refentry id="generate.toc">
+<refmeta>
+<refentrytitle>generate.toc</refentrytitle>
+<refmiscinfo role="type">table</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.toc</refname>
+<refpurpose>Control generation of ToCs and LoTs</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='generate.toc.frag'>
+<xsl:param condition="html" name="generate.toc">
+appendix  toc
+article   toc
+book      toc,figure,table,example,equation
+chapter   toc
+part      toc
+preface   toc
+qandadiv  toc
+qandaset  toc
+reference toc
+section   toc
+set       toc
+</xsl:param>
+<xsl:param condition="fo" name="generate.toc">
+/appendix toc
+/article  toc
+book      toc,figure,table,example,equation
+/chapter  toc
+part      toc
+/preface  toc
+qandadiv  toc
+qandaset  toc
+reference toc
+/section  toc
+set       toc
+</xsl:param>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>This parameter has a structured value. It is a table of space-delimited
+path/value pairs. Each path identifies some element in the source document
+using a restricted subset of XPath (only the implicit child axis, no wildcards,
+no predicates). Paths can be either relative or absolute.</para>
+
+<para>When a particular element, the stylesheets consult this table to
+determine if a ToC (or LoT(s)) should be generated.</para>
+
+<para>For example, consider the entry:</para>
+
+<screen>book toc,figure</screen>
+
+<para>This indicates that whenever a <sgmltag>book</sgmltag> is formatted, a
+Table Of Contents and a List of Figures should be generated. Similarly,</para>
+
+<screen>/chapter toc</screen>
+
+<para>indicates that whenever a document <emphasis>that has a root
+of</emphasis> <sgmltag>chapter</sgmltag> is formatted, a Table of
+Contents should be generated. The entry <literal>chapter</literal> would match
+all chapters, but <literal>/chapter</literal> matches only <sgmltag>chapter</sgmltag>
+document elements.</para>
+
+<para>Generally, the longest match wins. So, for example, if you want to distinguish
+articles in books from articles in parts, you could use these two entries:</para>
+
+<screen>book/article toc,figure
+part/article toc</screen>
+
+<para>Note that an article in a part can never match a <literal>book/article</literal>,
+so if you want nothing to be generated for articles in parts, you can simply leave
+that rule out.</para>
+
+</refsect1>
+</refentry>