diff options
Diffstat (limited to 'docs/xslt/db2latex-xsl/xsl/index.mod.xsl')
-rw-r--r-- | docs/xslt/db2latex-xsl/xsl/index.mod.xsl | 470 |
1 files changed, 470 insertions, 0 deletions
diff --git a/docs/xslt/db2latex-xsl/xsl/index.mod.xsl b/docs/xslt/db2latex-xsl/xsl/index.mod.xsl new file mode 100644 index 0000000000..b58e1d1910 --- /dev/null +++ b/docs/xslt/db2latex-xsl/xsl/index.mod.xsl @@ -0,0 +1,470 @@ +<?xml version='1.0'?> +<!DOCTYPE xsl:stylesheet [ <!ENTITY % xsldoc.ent SYSTEM "./xsldoc.ent"> %xsldoc.ent; ]> +<!--############################################################################# +| $Id: index.mod.xsl,v 1.17 2004/01/27 05:59:51 j-devenish Exp $ +|- ############################################################################# +| $Author: j-devenish $ ++ ############################################################################## --> +<xsl:stylesheet + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" + exclude-result-prefixes="doc" version='1.0'> + + <doc:reference id="index" xmlns=""> + <referenceinfo> + <releaseinfo role="meta"> + $Id: index.mod.xsl,v 1.17 2004/01/27 05:59:51 j-devenish Exp $ + </releaseinfo> + <authorgroup> + &ramon; + &james; + </authorgroup> + <copyright> + <year>2000</year><year>2001</year><year>2002</year><year>2003</year> + <holder>Ramon Casellas</holder> + </copyright> + <revhistory> + <doc:revision rcasver="1.11">&rev_2003_05;</doc:revision> + </revhistory> + </referenceinfo> + <title>Indices <filename>index.mod.xsl</filename></title> + <partintro> + <para>The file <filename>index.mod.xsl</filename> contains the + XSL template for <doc:db>index</doc:db>.</para> + <!-- TODO: --> + <para>Describe indexterm-range key.</para> + <para> + + An <literal>indexterm-range</literal> XSLT key is defined for + all <quote>startofrange</quote> <doc:db>indexterm</doc:db> + elements, matching their <sgmltag + class="attribute">id</sgmltag> attribute. + + </para> + </partintro> + </doc:reference> + + <!-- Our key for ranges --> + <xsl:key name="indexterm-range" match="indexterm[@class='startofrange']" use="@id"/> + + <doc:template basename="index" xmlns=""> + <refpurpose>Process <doc:db>index</doc:db> and <doc:db>setindex</doc:db> elements</refpurpose> + <doc:description> + <para> + Produce a chapter-level index in &LaTeX;. + </para> + </doc:description> + <doc:variables> + &no_var; + </doc:variables> + <doc:notes> + + <para> + + You will need to run your typesetter at least twice, and + possibly three times, to have the index generated normally (you + will also need to run the <command>makeidx</command> command). + + </para> + + &essential_preamble; + </doc:notes> + <doc:samples> + <simplelist type='inline'> + &test_book; + &test_index; + &test_draft; + </simplelist> + </doc:samples> + </doc:template> + <xsl:template match="index|setindex"> + <xsl:variable name="preamble" select="node()[not(self::indexinfo or self::setindexinfo or self::title or self::subtitle or self::titleabbrev or self::indexdiv or self::indexentry)]"/> + <xsl:text>\setlength\saveparskip\parskip </xsl:text> + <xsl:text>\setlength\saveparindent\parindent </xsl:text> + <xsl:text>\begin{dbtolatexindex}{</xsl:text> + <xsl:call-template name="generate.label.id"/> + <xsl:text>} </xsl:text> + <xsl:text>\setlength\tempparskip\parskip \setlength\tempparindent\parindent </xsl:text> + <xsl:text>\parskip\saveparskip \parindent\saveparindent </xsl:text> + <xsl:text>\noindent </xsl:text><!-- --> + <xsl:apply-templates select="$preamble"/> + <xsl:call-template name="map.begin"/> + <xsl:text>\parskip\tempparskip </xsl:text> + <xsl:text>\parindent\tempparindent </xsl:text> + <xsl:text>\makeatletter\@input@{\jobname.ind}\makeatother </xsl:text> + <xsl:call-template name="map.end"/> + <xsl:text>\end{dbtolatexindex} </xsl:text> + </xsl:template> + + <doc:template xmlns=""> + <refpurpose> Essential preamble for <filename>index.mod.xsl</filename> support </refpurpose> + <doc:description> + <para> + + This preamble aids the following: + <itemizedlist> + <listitem> + <simpara> + Allow user to override the &LaTeX; default index name + with a &DocBook; localisation. + </simpara> + <simpara> + Integrate <doc:db>index</doc:db>/@<sgmltag + class="attribute">id</sgmltag> cross-references + with &LaTeX; and tables of contents (makes indices + behave a bit like chapters). + </simpara> + <simpara> + Allow <quote>preamble</quote> templates or + mappings to be applied for indices. + </simpara> + </listitem> + </itemizedlist> + + </para> + </doc:description> + <doc:seealso> + <itemizedlist> + <listitem><simpara>&preamble;</simpara></listitem> + </itemizedlist> + </doc:seealso> + </doc:template> + <xsl:template name="latex.preamble.essential.index"> + <xsl:text> + <![CDATA[ +% index labeling helper +\newif\ifdocbooktolatexprintindex\docbooktolatexprintindextrue +\let\dbtolatex@@theindex\theindex +\let\dbtolatex@@endtheindex\endtheindex +\def\theindex{\relax} +\def\endtheindex{\relax} +\newenvironment{dbtolatexindex}[1] + { +\if@openright\cleardoublepage\else\clearpage\fi +\let\dbtolatex@@indexname\indexname +\def\dbtolatex@indexlabel{% + \ifnum \c@secnumdepth >\m@ne \refstepcounter{chapter}\fi% + \label{#1}\hypertarget{#1}{\dbtolatex@@indexname}% + \global\docbooktolatexprintindexfalse} +\def\indexname{\ifdocbooktolatexprintindex\dbtolatex@indexlabel\else\dbtolatex@@indexname\fi} +\dbtolatex@@theindex + } + { +\dbtolatex@@endtheindex\let\indexname\dbtolatex@@indexname + } + +\newlength\saveparskip \newlength\saveparindent +\newlength\tempparskip \newlength\tempparindent +]]> + </xsl:text> + </xsl:template> + +<!-- + <xsl:template match="index/title"> + <xsl:call-template name="label.id"> <xsl:with-param name="object" select=".."/> </xsl:call-template> + </xsl:template> + +<xsl:template match="indexdiv"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="indexdiv/title"> + <xsl:call-template name="label.id"> <xsl:with-param name="object" select=".."/> </xsl:call-template> +</xsl:template> + + <xsl:template match="primary|secondary|tertiary|see|seealso"/> + +--> + + <doc:template xmlns=""> + <refpurpose>Process <doc:db>indexterm</doc:db> elements</refpurpose> + <doc:description> + <para> + Identify an instance of an indexed term. + </para> + </doc:description> + <doc:variables> + <itemizedlist> + <listitem><simpara><xref linkend="param.latex.generate.indexterm"/></simpara></listitem> + </itemizedlist> + </doc:variables> + <doc:params> + <variablelist> + <varlistentry> + <term>style</term> + <listitem><simpara> + &LaTeX; code used to format the displayed entry. + By default, this is drawn from any <quote>latex-index-style</quote> + processing instructions (and is therefore empty most of the time). + </simpara></listitem> + </varlistentry> + </variablelist> + </doc:params> + <doc:notes> + <para> + A &LaTeX; <function condition="latex">index</function> command + is issued. When an <doc:db>index</doc:db> element is included + in your document and indexing is enabled, this indexterm will + be indexed. + </para> + <para> + When <link linkend="param.latex.is.draft">draft mode</link> is + enabled, the physical location of <doc:db + basename="indexterm">indexterms</doc:db> will be highlighted + within the body of the text as well as appearing in the index + proper. + </para> + <para> + &DB2LaTeX; includes some logic to handle the + <quote>startofrange</quote> and <quote>endofrange</quote> + classes. + </para> + <para> + It is possible to format an entry (e.g. + make it bold or italic) by inserting a processing instruction + named <quote>latex-index-style</quote> in the appropriate + subterm. + </para> + </doc:notes> + <doc:samples> + <simplelist type='inline'> + &test_book; + &test_ddh; + &test_draft1; + &test_draft2; + &test_index; + </simplelist> + </doc:samples> + <doc:seealso> + <itemizedlist> + <listitem><simpara><xref linkend="param.latex.is.draft"/></simpara></listitem> + </itemizedlist> + </doc:seealso> + </doc:template> + <!-- INDEX TERM CONTENT MODEL + IndexTerm ::= + (Primary, + ((Secondary, + ((Tertiary, + (See|SeeAlso+)?)| + See|SeeAlso+)?)| + See|SeeAlso+)?) + --> + <xsl:template match="indexterm"> + <xsl:if test="$latex.generate.indexterm='1'"> + <xsl:variable name="idxterm"> + <xsl:apply-templates mode="indexterm"/> + </xsl:variable> + + <xsl:if test="@class and @zone"> + <xsl:message terminate="yes">Error: Only one attribute (@class or @zone) is in indexterm possible!</xsl:message> + </xsl:if> + + <xsl:choose> + <xsl:when test="@class='startofrange'"> + <xsl:text>\index{</xsl:text> + <xsl:value-of select="$idxterm"/> + <xsl:text>|(}</xsl:text> + </xsl:when> + <xsl:when test="@class='endofrange'"> + <xsl:choose> + <xsl:when test="count(key('indexterm-range',@startref)) = 0"> + <xsl:message terminate="yes"><xsl:text>Error: No indexterm with </xsl:text> + <xsl:text>id='</xsl:text><xsl:value-of select="@startref"/> + <xsl:text>' found!</xsl:text> + <xsl:text> Check your attributs id/startref in your indexterms!</xsl:text> + </xsl:message> + </xsl:when> + <xsl:otherwise> + <xsl:variable name="thekey" select="key('indexterm-range',@startref)"/> + <xsl:for-each select="$thekey[1]"> + <xsl:text>\index{</xsl:text> + <xsl:apply-templates mode="indexterm"/> + <xsl:text>|)}</xsl:text> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:text>\index{</xsl:text> + <xsl:value-of select="$idxterm"/> + <xsl:text>}</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:template> + + <xsl:template match="*" mode="indexterm"> + <xsl:message>WARNING: Element '<xsl:value-of select="local-name()"/>' in indexterm not supported and skipped!</xsl:message> + </xsl:template> + + <!-- + <xsl:template match="acronym|foreignphrase" mode="indexterm"> + <xsl:apply-templates mode="indexterm"/> + </xsl:template> + --> + + <doc:template xmlns=""> + <refpurpose>Process the contents of <doc:db basename="indexterm">indexterms</doc:db></refpurpose> + <doc:description> + <para> + Register a primary index term. + </para> + </doc:description> + <doc:variables> + &no_var; + </doc:variables> + <doc:notes> + <para> + Calls <xref linkend="template.index.subterm"/>. + </para> + </doc:notes> + </doc:template> + <xsl:template match="primary" mode="indexterm"> + <xsl:call-template name="index.subterm"/> + </xsl:template> + + <doc:template xmlns=""> + <refpurpose>Process the contents of <doc:db basename="indexterm">indexterms</doc:db></refpurpose> + <doc:description> + <para> + Register a secondary or tertiary index term. + </para> + </doc:description> + <doc:variables> + &no_var; + </doc:variables> + <doc:notes> + <para> + Calls <xref linkend="template.index.subterm"/>. + </para> + </doc:notes> + </doc:template> + <xsl:template match="secondary|tertiary" mode="indexterm"> + <xsl:text>!</xsl:text> + <xsl:call-template name="index.subterm"/> + </xsl:template> + + <doc:template xmlns=""> + <refpurpose>Process the contents of <doc:db basename="indexterm">indexterms</doc:db></refpurpose> + <doc:description> + <para> + Register a primary, secondary or tertiary index term. + </para> + </doc:description> + <doc:variables> + &no_var; + </doc:variables> + <doc:notes> + <para> + + If no <sgmltag class="attribute">sortas</sgmltag> attribute is + present, the contents of <doc:db>primary</doc:db>, + <doc:db>secondary</doc:db> and <doc:db>tertiary</doc:db> + elements are converted to text-only and no templates are + applied. If the <sgmltag class="attribute">sortas</sgmltag> + attribute is present and non-empty, its value is used for indexing + and sorting (but not for display)<!-- and templates + <emphasis>are</emphasis> applied for display purposes-->. + + </para> + <para> + + If a <quote>latex-index-style</quote> processing instruction is + present, the displayed indexterm will be formatted by treating + the content of the PI as a &LaTeX; command. + + </para> + </doc:notes> + </doc:template> + <xsl:template name="index.subterm"> + <xsl:variable name="style" select="processing-instruction('latex-index-style')"/> + <xsl:choose> + <xsl:when test="@sortas!=''"> + <xsl:variable name="string"> + <xsl:call-template name="scape-indexterm"> + <xsl:with-param name="string" select="@sortas"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="content"> + <xsl:call-template name="scape-indexterm"> + <xsl:with-param name="string" select="."/> + </xsl:call-template> + </xsl:variable> + <xsl:value-of select="normalize-space($string)"/> + <xsl:text>@{</xsl:text> + <xsl:value-of select="$style"/> + <xsl:text>{</xsl:text> + <xsl:value-of select="normalize-space($content)"/> + <xsl:text>}}</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:variable name="string"> + <xsl:call-template name="scape-indexterm"> + <xsl:with-param name="string" select="."/> + </xsl:call-template> + </xsl:variable> + <xsl:value-of select="normalize-space($string)"/> + <xsl:if test="$style!=''"> + <xsl:text>@{</xsl:text> + <xsl:value-of select="$style"/> + <xsl:text>{</xsl:text> + <xsl:value-of select="normalize-space($string)"/> + <xsl:text>}}</xsl:text> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + <!-- + <xsl:apply-templates mode="indexterm"/> + --> + </xsl:template> + + <doc:template xmlns=""> + <refpurpose>Process the contents of <doc:db>see</doc:db> and <doc:db>seealso</doc:db> elements</refpurpose> + <doc:description> + <para> + Annotate an index entry with a <quote>See</quote> or <quote>See also</quote> cross-reference. + </para> + </doc:description> + <doc:variables> + &no_var; + </doc:variables> + <doc:notes> + <para> + Templates are applied. + <quote>See</quote> or <quote>see also</quote> text + is generated by <literal>gentext.element.name</literal> + and formatted in italics. + </para> + </doc:notes> + </doc:template> + <xsl:template match="see|seealso" mode="indexterm"> + <xsl:text>|textit{</xsl:text> + <xsl:call-template name="gentext.element.name"/> + <xsl:text>} {</xsl:text> + <xsl:apply-templates/> + <!-- + <xsl:apply-templates mode="indexterm"/> + --> + <xsl:text>} </xsl:text> + </xsl:template> + + <doc:template xmlns=""> + <refpurpose> Skip <doc:db>indexentry</doc:db>-related elements </refpurpose> + <doc:description> + <para> + Ignores the elements. + </para> + </doc:description> + <doc:variables> + &no_var; + </doc:variables> + <doc:notes> + <para> + &DB2LaTeX; only supports indices that are generated by &LaTeX; itself. + </para> + </doc:notes> + </doc:template> + <xsl:template match="indexentry|primaryie|secondaryie|tertiaryie|seeie|seealsoie"/> + +</xsl:stylesheet> |