</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>
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 $@
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
<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/>
</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}">
<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">
<!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">
&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>
<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"/>
<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">
XSLT=../../cvstools/saxon
XJPARSE=../../cvstools/xjparse
+PARAMPROF=.param.profiled
+PARAMSTRIP=.param.stripped
+
include Makefile.param
all: titlepage.templates.xsl param.xsl \
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 $@
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
</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>
<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/>
</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>
<!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">
<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>
<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"/>
</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"/>
<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/>
<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 <= $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 >= 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 >= 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 >= 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 >= 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 >= 5)
or refentry">
<xsl:call-template name="section.toc"/>
</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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
--- /dev/null
+<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>