KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17
System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64
User : nobody ( 99)
PHP Version : 5.2.17
Disable Function : NONE
Directory :  /proc/22697/root/usr/share/xml/gnome/xslt/docbook/common/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //proc/22697/root/usr/share/xml/gnome/xslt/docbook/common/db-label.xsl
<?xml version='1.0' encoding='UTF-8'?><!-- -*- indent-tabs-mode: nil -*- -->
<!--
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option) any
later version.

This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
details.

You should have received a copy of the GNU Lesser General Public License
along with this program; see the file COPYING.LGPL.  If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
-->

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:doc="http://www.gnome.org/~shaunm/xsldoc"
                xmlns:msg="http://www.gnome.org/~shaunm/gnome-doc-utils/l10n"
                exclude-result-prefixes="doc"
                version="1.0">

<doc:title>Automatic Labels</doc:title>


<!-- == db.label =========================================================== -->

<template xmlns="http://www.gnome.org/~shaunm/xsldoc">
  <name>db.label</name>
  <purpose>
    Generate the label for an element
  </purpose>
  <parameter>
    <name>node</name>
    <purpose>
      The element for which to generate a label
    </purpose>
  </parameter>
  <parameter>
    <name>role</name>
    <purpose>
      The role of the label, as passed to the format templates
    </purpose>
  </parameter>
  <para>
    This template generates the label used for some sectioning and
    block-level elements.  For instance, this would generate strings
    such as Section 14.3 or Table 5-2.  The template simply applies
    the mode <mode>db.label.mode</mode> to the element.  To change
    the behavior of a particular type of element, you should always
    override the mode template for that type of element.
  </para>
  <para>
    Overriding the <template>db.label</template> template should only
    be done if you wish to change the labelling mechanism completely, or
    you wish to wrap the labelling mechanism (for instance, with a caching
    extension).  Do not override this template to suppress label prefixes
    in titles.
  </para>
</template>

<xsl:template name="db.label">
  <xsl:param name="node" select="."/>
  <xsl:param name="role"/>
  <xsl:choose>
    <xsl:when test="$node/@label">
      <xsl:value-of select="$node/@label"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:apply-templates mode="db.label.mode" select="$node">
        <xsl:with-param name="role" select="$role"/>
      </xsl:apply-templates>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>


<!-- == db.label.mode ====================================================== -->

<mode xmlns="http://www.gnome.org/~shaunm/xsldoc">
<name>db.label.mode</name>
<FIXME/>
</mode>

<!-- = question = -->
<xsl:template mode="db.label.mode" match="answer">
  <xsl:param name="role"/>
  <xsl:variable name="qandaset" select="ancestor::qandaset[1]"/>
  <xsl:if test="$qandaset/@defaultlabel = 'qanda'">
    <xsl:call-template name="l10n.gettext">
      <xsl:with-param name="msgid" select="'A:'"/>
    </xsl:call-template>
  </xsl:if>
</xsl:template>

<!-- = appendix = -->
<xsl:template mode="db.label.mode" match="appendix">
  <xsl:param name="role"/>
  <xsl:call-template name="l10n.gettext">
    <xsl:with-param name="msgid" select="'appendix.label'"/>
    <xsl:with-param name="role" select="$role"/>
    <xsl:with-param name="node" select="."/>
    <xsl:with-param name="format" select="true()"/>
  </xsl:call-template>
</xsl:template>

<!-- = bibliography = -->
<xsl:template mode="db.label.mode" match="bibliography"/>

<!-- = biblioentry | bibliomixed = -->
<xsl:template mode="db.label.mode" match="biblioentry | bibliomixed">
  <xsl:if test="*[1]/self::abbrev | @xreflabel | @id">
    <!-- FIXME: I18N -->
    <xsl:text>[</xsl:text>
    <xsl:choose>
      <xsl:when test="*[1]/self::abbrev">
        <xsl:apply-templates select="abbrev[1]"/>
      </xsl:when>
      <xsl:when test="@xreflabel">
        <xsl:value-of select="@xreflabel"/>
      </xsl:when>
      <xsl:when test="@id">
        <xsl:value-of select="@id"/>
      </xsl:when>
    </xsl:choose>
    <xsl:text>]</xsl:text>
  </xsl:if>
</xsl:template>

<!-- = book = -->
<xsl:template mode="db.label.mode" match="book">
  <xsl:param name="role"/>
  <xsl:call-template name="l10n.gettext">
    <xsl:with-param name="msgid" select="'book.label'"/>
    <xsl:with-param name="role" select="$role"/>
    <xsl:with-param name="node" select="."/>
    <xsl:with-param name="format" select="true()"/>
  </xsl:call-template>
</xsl:template>

<!-- = chapter = -->
<xsl:template mode="db.label.mode" match="chapter">
  <xsl:param name="role"/>
  <xsl:call-template name="l10n.gettext">
    <xsl:with-param name="msgid" select="'chapter.label'"/>
    <xsl:with-param name="role" select="$role"/>
    <xsl:with-param name="node" select="."/>
    <xsl:with-param name="format" select="true()"/>
  </xsl:call-template>
</xsl:template>

<!-- = example = -->
<xsl:template mode="db.label.mode" match="example">
  <xsl:param name="role"/>
  <xsl:call-template name="l10n.gettext">
    <xsl:with-param name="msgid" select="'example.label'"/>
    <xsl:with-param name="role" select="$role"/>
    <xsl:with-param name="node" select="."/>
    <xsl:with-param name="format" select="true()"/>
  </xsl:call-template>
</xsl:template>

<!-- = figure = -->
<xsl:template mode="db.label.mode" match="figure">
  <xsl:param name="role"/>
  <xsl:call-template name="l10n.gettext">
    <xsl:with-param name="msgid" select="'figure.label'"/>
    <xsl:with-param name="role" select="$role"/>
    <xsl:with-param name="node" select="."/>
    <xsl:with-param name="format" select="true()"/>
  </xsl:call-template>
</xsl:template>

<!-- = glossary = -->
<xsl:template mode="db.label.mode" match="glossary"/>

<!-- = part = -->
<xsl:template mode="db.label.mode" match="part">
  <xsl:param name="role"/>
  <xsl:call-template name="l10n.gettext">
    <xsl:with-param name="msgid" select="'part.label'"/>
    <xsl:with-param name="role" select="$role"/>
    <xsl:with-param name="node" select="."/>
    <xsl:with-param name="format" select="true()"/>
  </xsl:call-template>
</xsl:template>

<!-- = preface = -->
<xsl:template mode="db.label.mode" match="preface"/>

<!-- = question = -->
<xsl:template mode="db.label.mode" match="question">
  <xsl:param name="role"/>
  <xsl:variable name="qandaset" select="ancestor::qandaset[1]"/>
  <xsl:choose>
    <xsl:when test="label">
      <xsl:apply-templates select="label/node()"/>
    </xsl:when>
    <xsl:when test="$qandaset/@defaultlabel = 'none'"/>
    <xsl:when test="$qandaset/@defaultlabel = 'qanda'">
      <xsl:call-template name="l10n.gettext">
        <xsl:with-param name="msgid" select="'Q:'"/>
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:call-template name="l10n.gettext">
        <xsl:with-param name="msgid" select="'question.label'"/>
        <xsl:with-param name="role" select="$role"/>
        <xsl:with-param name="node" select="."/>
        <xsl:with-param name="format" select="true()"/>
      </xsl:call-template>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

<!-- = refsection = -->
<xsl:template mode="db.label.mode" match="
              refsection | refsect1 | refsect2 | refsect3">
  <xsl:param name="role"/>
  <xsl:call-template name="l10n.gettext">
    <xsl:with-param name="msgid" select="'refsection.label'"/>
    <xsl:with-param name="role" select="$role"/>
    <xsl:with-param name="node" select="."/>
    <xsl:with-param name="format" select="true()"/>
  </xsl:call-template>
</xsl:template>

<!-- = section = -->
<xsl:template mode="db.label.mode" match="
              section | sect1 | sect2 | sect3 | sect4 | sect5 | simplesect">
  <xsl:param name="role"/>
  <xsl:call-template name="l10n.gettext">
    <xsl:with-param name="msgid" select="'section.label'"/>
    <xsl:with-param name="role" select="$role"/>
    <xsl:with-param name="node" select="."/>
    <xsl:with-param name="format" select="true()"/>
  </xsl:call-template>
</xsl:template>

<!-- = table = -->
<xsl:template mode="db.label.mode" match="table">
  <xsl:param name="role"/>
  <xsl:call-template name="l10n.gettext">
    <xsl:with-param name="msgid" select="'table.label'"/>
    <xsl:with-param name="role" select="$role"/>
    <xsl:with-param name="node" select="."/>
    <xsl:with-param name="format" select="true()"/>
  </xsl:call-template>
</xsl:template>

<!-- FIXME -->

<xsl:template mode="db.label.mode" match="
              article  |
              colophon |    index     |
              qandadiv | qandaset |  reference |
              set      | setindex ">
  <xsl:param name="role"/>
<!-- FIXME 
  <xsl:call-template name="db.label.name"/>
  <xsl:text> </xsl:text>
  <xsl:call-template name="db.label.number"/>
-->
<xsl:call-template name="db.title"/>
</xsl:template>

<xsl:template mode="db.label.mode" match="synopfragment">
  <xsl:param name="role"/>
  <xsl:text>(</xsl:text>
  <xsl:call-template name="db.number"/>
  <xsl:text>)</xsl:text>
</xsl:template>

<xsl:template mode="db.label.mode" match="title | subtitle">
  <xsl:param name="role"/>
  <xsl:call-template name="db.label">
    <xsl:with-param name="node" select=".."/>
  </xsl:call-template>
</xsl:template>

<xsl:template mode="db.label.mode" match="
              appendixinfo | articleinfo  | bibliographyinfo | bookinfo     |
              chapterinfo  | glossaryinfo | indexinfo        | partinfo     |
              prefaceinfo  | refentryinfo | referenceinfo    | refsect1info |
              refsect2info | refsect3info | refsectioninfo   | sect1info    |
              sect2info    | sect3info    | sect4info        | sect5info    |
              sectioninfo  | setindexinfo | setinfo          ">
  <xsl:param name="role"/>
  <xsl:call-template name="l10n.gettext">
    <xsl:with-param name="msgid" select="'About This Document'"/>
  </xsl:call-template>
<!-- FIXME 
  <xsl:call-template name="db.label.name"/>
-->
</xsl:template>

<xsl:template mode="db.label.mode" match="*"/>


<!-- == db.number ========================================================== -->

<template xmlns="http://www.gnome.org/~shaunm/xsldoc">
  <name>db.number</name>
  <purpose>
    Generate the number portion of a label
  </purpose>
  <parameter>
    <name>node</name>
    <purpose>
      The element for which to generate a number
    </purpose>
  </parameter>
  <para>
    This template generates the number portion of the label used for some
    sectioning and block-level elements.  The template simply applies the
    mode <mode>db.number.mode</mode> to the element.  To change
    the behavior of a particular type of element, you should always
    override the mode template for that type of element.
  </para>
  <para>
    Overriding the <template>db.number</template> template should
    only be done if you wish to change the numbering mechanism completely,
    or you wish to wrap the numbering mechanism (for example, with a caching
    extension).
  </para>
</template>

<xsl:template name="db.number">
  <xsl:param name="node" select="."/>
  <xsl:apply-templates mode="db.number.mode" select="$node"/>
</xsl:template>


<!-- == db.number.mode ===================================================== -->

<mode xmlns="http://www.gnome.org/~shaunm/xsldoc">>
<name>db.number.mode</name>
<FIXME/>
</mode>

<!-- = appendix = -->
<xsl:template mode="db.number.mode" match="appendix">
  <xsl:choose>
    <xsl:when test="parent::part">
      <xsl:call-template name="l10n.gettext">
        <xsl:with-param name="msgid" select="'appendix.number'"/>
        <xsl:with-param name="node" select="."/>
        <xsl:with-param name="format" select="true()"/>
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:call-template name="db.digit"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

<!-- = book = -->
<xsl:template mode="db.number.mode" match="book">
  <xsl:call-template name="db.digit"/>
</xsl:template>

<!-- = chapter = -->
<xsl:template mode="db.number.mode" match="chapter">
  <xsl:choose>
    <xsl:when test="parent::part">
      <xsl:call-template name="l10n.gettext">
        <xsl:with-param name="msgid" select="'chapter.number'"/>
        <xsl:with-param name="node" select="."/>
        <xsl:with-param name="format" select="true()"/>
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:call-template name="db.digit"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

<!-- = example = -->
<xsl:template mode="db.number.mode" match="example">
  <xsl:choose>
    <xsl:when test="ancestor::appendix or ancestor::chapter">
      <xsl:call-template name="l10n.gettext">
        <xsl:with-param name="msgid" select="'example.number'"/>
        <xsl:with-param name="node" select="."/>
        <xsl:with-param name="format" select="true()"/>
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:call-template name="db.digit"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

<!-- = figure = -->
<xsl:template mode="db.number.mode" match="figure">
  <xsl:choose>
    <xsl:when test="ancestor::appendix or ancestor::chapter">
      <xsl:call-template name="l10n.gettext">
        <xsl:with-param name="msgid" select="'figure.number'"/>
        <xsl:with-param name="node" select="."/>
        <xsl:with-param name="format" select="true()"/>
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:call-template name="db.digit"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

<!-- = footnote = -->
<xsl:template mode="db.number.mode" match="footnote">
  <xsl:param name="depth_in_chunk">
    <xsl:call-template name="db.chunk.depth-in-chunk">
      <xsl:with-param name="node" select="."/>
    </xsl:call-template>
  </xsl:param>
  <xsl:variable name="notes" select="preceding::footnote"/>
  <xsl:choose>
    <xsl:when test="count($notes) != 0">
      <xsl:call-template name="db.number.footnote.tally">
        <xsl:with-param name="chunk" select="ancestor::*[number($depth_in_chunk)]"/>
        <xsl:with-param name="notes" select="$notes"/>
        <xsl:with-param name="pos" select="1"/>
        <xsl:with-param name="count" select="1"/>
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="1"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

<xsl:template name="db.number.footnote.tally" doc:private="true">
  <xsl:param name="chunk"/>
  <xsl:param name="notes"/>
  <xsl:param name="pos"/>
  <xsl:param name="count"/>
  <xsl:variable name="this" select="$notes[$pos]"/>
  <xsl:variable name="depth">
    <xsl:call-template name="db.chunk.depth-in-chunk">
      <xsl:with-param name="node" select="$this"/>
    </xsl:call-template>
  </xsl:variable>
  <xsl:variable name="increment"
                select="number($this/ancestor::*[number($depth)] = $chunk)"/>
  <xsl:choose>
    <xsl:when test="$pos = count($notes)">
      <xsl:value-of select="$count + $increment"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:call-template name="db.number.footnote.tally">
        <xsl:with-param name="chunk" select="$chunk"/>
        <xsl:with-param name="notes" select="$notes"/>
        <xsl:with-param name="pos" select="$pos + 1"/>
        <xsl:with-param name="count" select="$count + $increment"/>
      </xsl:call-template>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

<!-- = glossary = -->
<xsl:template mode="db.number.mode" match="glossary"/>

<!-- = part = -->
<xsl:template mode="db.number.mode" match="part">
  <xsl:call-template name="db.digit"/>
</xsl:template>

<!-- = preface = -->
<xsl:template mode="db.number.mode" match="preface"/>

<!-- = question = -->
<xsl:template mode="db.number.mode" match="question">
  <xsl:call-template name="db.digit"/>
</xsl:template>

<!-- = refsection = -->
<xsl:template mode="db.number.mode" match="
              refsection | refsect1 | refsect2 | refsect3">
  <xsl:choose>
    <xsl:when test="parent::refentry">
      <xsl:call-template name="db.digit"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:call-template name="l10n.gettext">
        <xsl:with-param name="msgid" select="'refsection.number'"/>
        <xsl:with-param name="node" select="."/>
        <xsl:with-param name="format" select="true()"/>
      </xsl:call-template>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

<!-- = section = -->
<xsl:template mode="db.number.mode" match="
              section | sect1 | sect2 | sect3 | sect4 | sect5 | simplesect">
  <xsl:choose>
    <xsl:when test="local-name(..) != 'article'   and
                    local-name(..) != 'partintro' and
                    local-name(..) != 'preface'   and
                    .. != /                       ">
      <xsl:call-template name="l10n.gettext">
        <xsl:with-param name="msgid" select="'section.number'"/>
        <xsl:with-param name="node" select="."/>
        <xsl:with-param name="format" select="true()"/>
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:call-template name="db.digit"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

<!-- = table = -->
<xsl:template mode="db.number.mode" match="table">
  <xsl:choose>
    <xsl:when test="ancestor::appendix or ancestor::chapter">
      <xsl:call-template name="l10n.gettext">
        <xsl:with-param name="msgid" select="'table.number'"/>
        <xsl:with-param name="node" select="."/>
        <xsl:with-param name="format" select="true()"/>
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:call-template name="db.digit"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

<!-- FIXME: need to use formatters -->

<xsl:template mode="db.number.mode" match="answer">
  <!-- FIXME -->
</xsl:template>


<xsl:template mode="db.number.mode" match="article">
  <xsl:number format="I" value="
              count(preceding-sibling::article) + 1 +
              count(parent::part/preceding-sibling::part/article)"/>
</xsl:template>

<xsl:template mode="db.number.mode" match="reference">
  <xsl:number format="I" value="
              count(preceding-sibling::reference) + 1 +
              count(parent::part/preceding-sibling::part/reference)"/>
</xsl:template>

<xsl:template mode="db.number.mode" match="
              book  | bibliography | colophon | glossary |
              index    | set      | setindex "/>

<xsl:template mode="db.number.mode" match="synopfragment">
  <xsl:value-of select="count(preceding-sibling::synopfragment) + 1"/>
</xsl:template>

<xsl:template mode="db.number.mode" match="title | subtitle">
  <xsl:call-template name="db.number">
    <xsl:with-param name="node" select=".."/>
  </xsl:call-template>
</xsl:template>

<xsl:template mode="db.number.mode" match="*">
  <xsl:call-template name="db.number">
    <xsl:with-param name="node" select=".."/>
  </xsl:call-template>
</xsl:template>


<!-- == db.digit =========================================================== -->

<xsl:template name="db.digit">
  <xsl:param name="node" select="."/>
  <xsl:apply-templates mode="db.digit.mode" select="$node"/>
</xsl:template>

<xsl:template name="db.digit.format" doc:private="true">
  <xsl:param name="digit"/>
  <xsl:param name="format"/>
  <xsl:choose>
    <xsl:when test="$format = '1'">
      <xsl:number format="1" value="$digit"/>
    </xsl:when>
    <xsl:when test="$format = 'A'">
      <xsl:number format="A" value="$digit"/>
    </xsl:when>
    <xsl:when test="$format = 'a'">
      <xsl:number format="a" value="$digit"/>
    </xsl:when>
    <xsl:when test="$format = 'I'">
      <xsl:number format="I" value="$digit"/>
    </xsl:when>
    <xsl:when test="$format = 'i'">
      <xsl:number format="i" value="$digit"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:message>
        <xsl:text>Unrecognized number formatter: </xsl:text>
        <xsl:value-of select="$format"/>
      </xsl:message>
      <xsl:number format="1" value="$digit"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>


<!-- == db.digit.mode ====================================================== -->

<!-- = appendix = -->
<xsl:template mode="db.digit.mode" match="appendix">
  <xsl:call-template name="db.digit.format">
    <!-- FIXME: use xsl:number -->
    <xsl:with-param name="digit" select="
                    count(preceding-sibling::appendix) + 1 +
                    count(parent::part/preceding-sibling::part/appendix)"/>
    <xsl:with-param name="format">
      <xsl:call-template name="l10n.gettext">
        <xsl:with-param name="msgid" select="'appendix.digit'"/>
      </xsl:call-template>
    </xsl:with-param>
  </xsl:call-template>
</xsl:template>

<!-- = book = -->
<xsl:template mode="db.digit.mode" match="book">
  <xsl:call-template name="db.digit.format">
    <xsl:with-param name="digit" select="count(preceding-sibling::book) + 1"/>
    <xsl:with-param name="format">
      <xsl:call-template name="l10n.gettext">
        <xsl:with-param name="msgid" select="'book.digit'"/>
      </xsl:call-template>
    </xsl:with-param>
  </xsl:call-template>
</xsl:template>

<!-- = chapter = -->
<xsl:template mode="db.digit.mode" match="chapter">
  <xsl:call-template name="db.digit.format">
    <!-- FIXME: use xsl:number -->
    <xsl:with-param name="digit" select="
                    count(preceding-sibling::chapter) + 1 +
                    count(parent::part/preceding-sibling::part/chapter)"/>
    <xsl:with-param name="format">
      <xsl:call-template name="l10n.gettext">
        <xsl:with-param name="msgid" select="'chapter.digit'"/>
      </xsl:call-template>
    </xsl:with-param>
  </xsl:call-template>
</xsl:template>

<!-- = example = -->
<xsl:template mode="db.digit.mode" match="example">
  <xsl:call-template name="db.digit.format">
    <xsl:with-param name="digit">
      <xsl:number level="any" count="example" from="chapter | appendix"/>
    </xsl:with-param>
    <xsl:with-param name="format">
      <xsl:call-template name="l10n.gettext">
        <xsl:with-param name="msgid" select="'example.digit'"/>
      </xsl:call-template>
    </xsl:with-param>
  </xsl:call-template>
</xsl:template>

<!-- = figure = -->
<xsl:template mode="db.digit.mode" match="figure">
  <xsl:call-template name="db.digit.format">
    <xsl:with-param name="digit">
      <xsl:number level="any" count="figure" from="chapter | appendix"/>
    </xsl:with-param>
    <xsl:with-param name="format">
      <xsl:call-template name="l10n.gettext">
        <xsl:with-param name="msgid" select="'figure.digit'"/>
      </xsl:call-template>
    </xsl:with-param>
  </xsl:call-template>
</xsl:template>

<!-- = glossary = -->
<xsl:template mode="db.digit.mode" match="glossary"/>

<!-- = part = -->
<xsl:template mode="db.digit.mode" match="part">
  <xsl:call-template name="db.digit.format">
    <xsl:with-param name="digit" select="count(preceding-sibling::part) + 1"/>
    <xsl:with-param name="format">
      <xsl:call-template name="l10n.gettext">
        <xsl:with-param name="msgid" select="'part.digit'"/>
      </xsl:call-template>
    </xsl:with-param>
  </xsl:call-template>
</xsl:template>

<!-- = preface = -->
<xsl:template mode="db.digit.mode" match="preface"/>

<!-- = question = -->
<xsl:template mode="db.digit.mode" match="question">
  <xsl:call-template name="db.digit.format">
    <xsl:with-param name="digit">
      <xsl:number level="any" format="1" count="question" from="qandaset"/>
    </xsl:with-param>
    <xsl:with-param name="format">
      <xsl:call-template name="l10n.gettext">
        <xsl:with-param name="msgid" select="'question.digit'"/>
      </xsl:call-template>
    </xsl:with-param>
  </xsl:call-template>
</xsl:template>

<!-- = refsection = -->
<xsl:template mode="db.digit.mode" match="
              refsection | refsect1 | refsect2 | refsect3">
  <xsl:call-template name="db.digit.format">
    <xsl:with-param name="digit">
      <xsl:number level="single" format="1" count="
                  refsection | refsect1 | refsect2 | refsect3"/>
    </xsl:with-param>
    <xsl:with-param name="format">
      <xsl:call-template name="l10n.gettext">
        <xsl:with-param name="msgid" select="'refsection.digit'"/>
      </xsl:call-template>
    </xsl:with-param>
  </xsl:call-template>
</xsl:template>

<!-- = section = -->
<xsl:template mode="db.digit.mode" match="
              section | sect1 | sect2 | sect3 | sect4 | sect5 | simplesect">
  <xsl:call-template name="db.digit.format">
    <xsl:with-param name="digit">
      <xsl:number level="single" format="1" count="
                  section | sect1 | sect2 | sect3 | sect4 | sect5 | simplesect"/>
    </xsl:with-param>
    <xsl:with-param name="format">
      <xsl:call-template name="l10n.gettext">
        <xsl:with-param name="msgid" select="'section.digit'"/>
      </xsl:call-template>
    </xsl:with-param>
  </xsl:call-template>
</xsl:template>

<!-- = table = -->
<xsl:template mode="db.digit.mode" match="table">
  <xsl:call-template name="db.digit.format">
    <xsl:with-param name="digit">
      <xsl:number level="any" count="table" from="chapter | appendix"/>
    </xsl:with-param>
    <xsl:with-param name="format">
      <xsl:call-template name="l10n.gettext">
        <xsl:with-param name="msgid" select="'table.digit'"/>
      </xsl:call-template>
    </xsl:with-param>
  </xsl:call-template>
</xsl:template>


<!-- == db.number.parent.mode ============================================== -->

<xsl:template mode="db.number.parent.mode" match="*">
  <xsl:call-template name="db.number">
    <xsl:with-param name="node" select=".."/>
  </xsl:call-template>
</xsl:template>

<!-- = example = -->
<xsl:template mode="db.number.parent.mode" match="example">
  <xsl:call-template name="db.number">
    <xsl:with-param name="node"
                    select="(ancestor::appendix | ancestor::chapter)[last()]"/>
  </xsl:call-template>
</xsl:template>

<!-- = figure = -->
<xsl:template mode="db.number.parent.mode" match="figure">
  <xsl:call-template name="db.number">
    <xsl:with-param name="node"
                    select="(ancestor::appendix | ancestor::chapter)[last()]"/>
  </xsl:call-template>
</xsl:template>

<!-- = table = -->
<xsl:template mode="db.number.parent.mode" match="table">
  <xsl:call-template name="db.number">
    <xsl:with-param name="node"
                    select="(ancestor::appendix | ancestor::chapter)[last()]"/>
  </xsl:call-template>
</xsl:template>


<!-- == msg:* ============================================================== -->

<xsl:template mode="l10n.format.mode" match="msg:digit">
  <xsl:param name="node"/>
  <xsl:call-template name="db.digit">
    <xsl:with-param name="node" select="$node"/>
  </xsl:call-template>
</xsl:template>

<xsl:template mode="l10n.format.mode" match="msg:glossterm">
  <xsl:param name="node"/>
  <xsl:apply-templates select="$node/glossterm"/>
</xsl:template>

<xsl:template mode="l10n.format.mode" match="msg:label">
  <xsl:param name="node"/>
  <xsl:call-template name="db.label">
    <xsl:with-param name="node" select="$node"/>
  </xsl:call-template>
</xsl:template>

<xsl:template mode="l10n.format.mode" match="msg:number">
  <xsl:param name="node"/>
  <xsl:call-template name="db.number">
    <xsl:with-param name="node" select="$node"/>
  </xsl:call-template>
</xsl:template>

<xsl:template mode="l10n.format.mode" match="msg:parent">
  <xsl:param name="node"/>
  <xsl:apply-templates mode="db.number.parent.mode" select="$node"/>
</xsl:template>

</xsl:stylesheet>

Anon7 - 2021