Blame xsl/common/labels.xsl

Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
                xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
Packit 0f19cf
                exclude-result-prefixes="doc"
Packit 0f19cf
                version='1.0'>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
     $Id
Packit 0f19cf
     ********************************************************************
Packit 0f19cf
Packit 0f19cf
     This file is part of the XSL DocBook Stylesheet distribution.
Packit 0f19cf
     See ../README or http://docbook.sf.net/release/xsl/current/ for
Packit 0f19cf
     copyright and other information.
Packit 0f19cf
Packit 0f19cf
     ******************************************************************** -->
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<doc:mode mode="label.markup" xmlns="">
Packit 0f19cf
<refpurpose>Provides access to element labels</refpurpose>
Packit 0f19cf
<refdescription id="label.markup-desc">
Packit 0f19cf
<para>Processing an element in the
Packit 0f19cf
<literal role="mode">label.markup</literal> mode produces the
Packit 0f19cf
element label.</para>
Packit 0f19cf
<para>Trailing punctuation is not added to the label.
Packit 0f19cf
</para>
Packit 0f19cf
</refdescription>
Packit 0f19cf
</doc:mode>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="*" mode="intralabel.punctuation">
Packit 0f19cf
  <xsl:text>.</xsl:text>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="*" mode="label.markup">
Packit 0f19cf
  <xsl:param name="verbose" select="1"/>
Packit 0f19cf
  <xsl:if test="$verbose">
Packit 0f19cf
    <xsl:message>
Packit 0f19cf
      <xsl:text>Request for label of unexpected element: </xsl:text>
Packit 0f19cf
      <xsl:value-of select="local-name(.)"/>
Packit 0f19cf
    </xsl:message>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="set|book" mode="label.markup">
Packit 0f19cf
  <xsl:if test="@label">
Packit 0f19cf
    <xsl:value-of select="@label"/>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="part" mode="label.markup">
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="@label">
Packit 0f19cf
      <xsl:value-of select="@label"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:when test="string($part.autolabel) != 0">
Packit 0f19cf
      <xsl:variable name="format">
Packit 0f19cf
        <xsl:call-template name="autolabel.format">
Packit 0f19cf
          <xsl:with-param name="format" select="$part.autolabel"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      <xsl:number from="book" count="part" format="{$format}"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="partintro" mode="label.markup">
Packit 0f19cf
  
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="preface" mode="label.markup">
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="@label">
Packit 0f19cf
      <xsl:value-of select="@label"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:when test="string($preface.autolabel) != 0">
Packit 0f19cf
      
Packit 0f19cf
                      ancestor::part">
Packit 0f19cf
        <xsl:variable name="part.label">
Packit 0f19cf
          
Packit 0f19cf
                               mode="label.markup"/>
Packit 0f19cf
        </xsl:variable>
Packit 0f19cf
        <xsl:if test="$part.label != ''">
Packit 0f19cf
          <xsl:value-of select="$part.label"/>
Packit 0f19cf
          
Packit 0f19cf
                               mode="intralabel.punctuation"/>
Packit 0f19cf
        </xsl:if>
Packit 0f19cf
      </xsl:if>
Packit 0f19cf
      <xsl:variable name="format">
Packit 0f19cf
        <xsl:call-template name="autolabel.format">
Packit 0f19cf
          <xsl:with-param name="format" select="$preface.autolabel"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
        <xsl:when test="$label.from.part != 0 and ancestor::part">
Packit 0f19cf
          <xsl:number from="part" count="preface" format="{$format}" level="any"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:otherwise>
Packit 0f19cf
          <xsl:number from="book" count="preface" format="{$format}" level="any"/>
Packit 0f19cf
        </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="chapter" mode="label.markup">
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="@label">
Packit 0f19cf
      <xsl:value-of select="@label"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:when test="string($chapter.autolabel) != 0">
Packit 0f19cf
      
Packit 0f19cf
                      ancestor::part">
Packit 0f19cf
        <xsl:variable name="part.label">
Packit 0f19cf
          
Packit 0f19cf
                               mode="label.markup"/>
Packit 0f19cf
        </xsl:variable>
Packit 0f19cf
        <xsl:if test="$part.label != ''">
Packit 0f19cf
          <xsl:value-of select="$part.label"/>
Packit 0f19cf
          
Packit 0f19cf
                               mode="intralabel.punctuation"/>
Packit 0f19cf
        </xsl:if>
Packit 0f19cf
      </xsl:if>
Packit 0f19cf
      <xsl:variable name="format">
Packit 0f19cf
        <xsl:call-template name="autolabel.format">
Packit 0f19cf
          <xsl:with-param name="format" select="$chapter.autolabel"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
        <xsl:when test="$label.from.part != 0 and ancestor::part">
Packit 0f19cf
          <xsl:number from="part" count="chapter" format="{$format}" level="any"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:otherwise>
Packit 0f19cf
          <xsl:number from="book" count="chapter" format="{$format}" level="any"/>
Packit 0f19cf
        </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="appendix" mode="label.markup">
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="@label">
Packit 0f19cf
      <xsl:value-of select="@label"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:when test="string($appendix.autolabel) != 0">
Packit 0f19cf
      
Packit 0f19cf
                      ancestor::part">
Packit 0f19cf
        <xsl:variable name="part.label">
Packit 0f19cf
          
Packit 0f19cf
                               mode="label.markup"/>
Packit 0f19cf
        </xsl:variable>
Packit 0f19cf
        <xsl:if test="$part.label != ''">
Packit 0f19cf
          <xsl:value-of select="$part.label"/>
Packit 0f19cf
          
Packit 0f19cf
                               mode="intralabel.punctuation"/>
Packit 0f19cf
        </xsl:if>
Packit 0f19cf
      </xsl:if>
Packit 0f19cf
      <xsl:variable name="format">
Packit 0f19cf
        <xsl:call-template name="autolabel.format">
Packit 0f19cf
          <xsl:with-param name="format" select="$appendix.autolabel"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
        <xsl:when test="$label.from.part != 0 and ancestor::part">
Packit 0f19cf
          <xsl:number from="part" count="appendix" format="{$format}" level="any"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:otherwise>
Packit 0f19cf
          
Packit 0f19cf
                      count="appendix" format="{$format}" level="any"/>
Packit 0f19cf
        </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="article" mode="label.markup">
Packit 0f19cf
  <xsl:if test="@label">
Packit 0f19cf
    <xsl:value-of select="@label"/>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="dedication|colophon" mode="label.markup">
Packit 0f19cf
  <xsl:if test="@label">
Packit 0f19cf
    <xsl:value-of select="@label"/>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="reference" mode="label.markup">
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="@label">
Packit 0f19cf
      <xsl:value-of select="@label"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:when test="string($reference.autolabel) != 0">
Packit 0f19cf
      
Packit 0f19cf
                      ancestor::part">
Packit 0f19cf
        <xsl:variable name="part.label">
Packit 0f19cf
          
Packit 0f19cf
                               mode="label.markup"/>
Packit 0f19cf
        </xsl:variable>
Packit 0f19cf
        <xsl:if test="$part.label != ''">
Packit 0f19cf
          <xsl:value-of select="$part.label"/>
Packit 0f19cf
          
Packit 0f19cf
                               mode="intralabel.punctuation"/>
Packit 0f19cf
        </xsl:if>
Packit 0f19cf
      </xsl:if>
Packit 0f19cf
      <xsl:variable name="format">
Packit 0f19cf
        <xsl:call-template name="autolabel.format">
Packit 0f19cf
          <xsl:with-param name="format" select="$reference.autolabel"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
        <xsl:when test="$label.from.part != 0 and ancestor::part">
Packit 0f19cf
          <xsl:number from="part" count="reference" format="{$format}" level="any"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:otherwise>
Packit 0f19cf
          <xsl:number from="book" count="reference" format="{$format}" level="any"/>
Packit 0f19cf
        </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="refentry" mode="label.markup">
Packit 0f19cf
  <xsl:if test="@label">
Packit 0f19cf
    <xsl:value-of select="@label"/>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="section" mode="label.markup">
Packit 0f19cf
  
Packit 0f19cf
  <xsl:if test="local-name(..) = 'section'">
Packit 0f19cf
    <xsl:variable name="parent.section.label">
Packit 0f19cf
      <xsl:call-template name="label.this.section">
Packit 0f19cf
        <xsl:with-param name="section" select=".."/>
Packit 0f19cf
      </xsl:call-template>
Packit 0f19cf
    </xsl:variable>
Packit 0f19cf
    <xsl:if test="$parent.section.label != '0'">
Packit 0f19cf
      <xsl:apply-templates select=".." mode="label.markup"/>
Packit 0f19cf
      <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="parent.is.component">
Packit 0f19cf
    <xsl:call-template name="is.component">
Packit 0f19cf
      <xsl:with-param name="node" select=".."/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="label">
Packit 0f19cf
    <xsl:call-template name="label.this.section">
Packit 0f19cf
      <xsl:with-param name="section" select="."/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
                and $parent.is.component != 0">
Packit 0f19cf
    <xsl:variable name="parent.label">
Packit 0f19cf
      <xsl:apply-templates select=".." mode="label.markup"/>
Packit 0f19cf
    </xsl:variable>
Packit 0f19cf
    <xsl:if test="$parent.label != ''">
Packit 0f19cf
      <xsl:apply-templates select=".." mode="label.markup"/>
Packit 0f19cf
      <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
  <xsl:message>
Packit 0f19cf
    test: <xsl:value-of select="$label"/>, <xsl:number count="section"/>
Packit 0f19cf
  </xsl:message>
Packit 0f19cf
-->
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="@label">
Packit 0f19cf
      <xsl:value-of select="@label"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:when test="$label != 0">      
Packit 0f19cf
      <xsl:variable name="format">
Packit 0f19cf
        <xsl:call-template name="autolabel.format">
Packit 0f19cf
          <xsl:with-param name="format" select="$section.autolabel"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      <xsl:number format="{$format}" count="section"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="sect1" mode="label.markup">
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="parent.is.component">
Packit 0f19cf
    <xsl:call-template name="is.component">
Packit 0f19cf
      <xsl:with-param name="node" select=".."/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="component.label">
Packit 0f19cf
    
Packit 0f19cf
                  and $parent.is.component != 0">
Packit 0f19cf
      <xsl:variable name="parent.label">
Packit 0f19cf
        <xsl:apply-templates select=".." mode="label.markup"/>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      <xsl:if test="$parent.label != ''">
Packit 0f19cf
        <xsl:apply-templates select=".." mode="label.markup"/>
Packit 0f19cf
        <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
Packit 0f19cf
      </xsl:if>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="is.numbered">
Packit 0f19cf
    <xsl:call-template name="label.this.section"/>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="@label">
Packit 0f19cf
      <xsl:value-of select="@label"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:when test="$is.numbered != 0">
Packit 0f19cf
      <xsl:variable name="format">
Packit 0f19cf
        <xsl:call-template name="autolabel.format">
Packit 0f19cf
          <xsl:with-param name="format" select="$section.autolabel"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      <xsl:copy-of select="$component.label"/>
Packit 0f19cf
      <xsl:number format="{$format}" count="sect1"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="sect2|sect3|sect4|sect5" mode="label.markup">
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="parent.section.label">
Packit 0f19cf
    <xsl:call-template name="label.this.section">
Packit 0f19cf
      <xsl:with-param name="section" select=".."/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
  <xsl:if test="$parent.section.label != '0'">
Packit 0f19cf
    <xsl:apply-templates select=".." mode="label.markup"/>
Packit 0f19cf
    <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="is.numbered">
Packit 0f19cf
    <xsl:call-template name="label.this.section"/>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="@label">
Packit 0f19cf
      <xsl:value-of select="@label"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:when test="$is.numbered != 0">
Packit 0f19cf
      <xsl:variable name="format">
Packit 0f19cf
        <xsl:call-template name="autolabel.format">
Packit 0f19cf
          <xsl:with-param name="format" select="$section.autolabel"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
        <xsl:when test="local-name(.) = 'sect2'">
Packit 0f19cf
          <xsl:number format="{$format}" count="sect2"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:when test="local-name(.) = 'sect3'">
Packit 0f19cf
          <xsl:number format="{$format}" count="sect3"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:when test="local-name(.) = 'sect4'">
Packit 0f19cf
          <xsl:number format="{$format}" count="sect4"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:when test="local-name(.) = 'sect5'">
Packit 0f19cf
          <xsl:number format="{$format}" count="sect5"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:otherwise>
Packit 0f19cf
          <xsl:message>label.markup: this can't happen!</xsl:message>
Packit 0f19cf
        </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="bridgehead" mode="label.markup">
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
                select="(ancestor::section
Packit 0f19cf
                         |ancestor::simplesect
Packit 0f19cf
                         |ancestor::sect1
Packit 0f19cf
                         |ancestor::sect2
Packit 0f19cf
                         |ancestor::sect3
Packit 0f19cf
                         |ancestor::sect4
Packit 0f19cf
                         |ancestor::sect5
Packit 0f19cf
                         |ancestor::refsect1
Packit 0f19cf
                         |ancestor::refsect2
Packit 0f19cf
                         |ancestor::refsect3
Packit 0f19cf
                         |ancestor::chapter
Packit 0f19cf
                         |ancestor::appendix
Packit 0f19cf
                         |ancestor::preface)[last()]"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:apply-templates select="$contsec" mode="label.markup"/>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="refsect1" mode="label.markup">
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="@label">
Packit 0f19cf
      <xsl:value-of select="@label"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:when test="$section.autolabel != 0">
Packit 0f19cf
      <xsl:variable name="format">
Packit 0f19cf
        <xsl:call-template name="autolabel.format">
Packit 0f19cf
          <xsl:with-param name="format" select="$section.autolabel"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      <xsl:number count="refsect1" format="{$format}"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="refsect2|refsect3" mode="label.markup">
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="parent.label">
Packit 0f19cf
    <xsl:apply-templates select=".." mode="label.markup"/>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
  <xsl:if test="$parent.label != ''">
Packit 0f19cf
    <xsl:apply-templates select=".." mode="label.markup"/>
Packit 0f19cf
    <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="@label">
Packit 0f19cf
      <xsl:value-of select="@label"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:when test="$section.autolabel != 0">
Packit 0f19cf
      <xsl:variable name="format">
Packit 0f19cf
        <xsl:call-template name="autolabel.format">
Packit 0f19cf
          <xsl:with-param name="format" select="$section.autolabel"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
        <xsl:when test="local-name(.) = 'refsect2'">
Packit 0f19cf
          <xsl:number count="refsect2" format="{$format}"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:otherwise>
Packit 0f19cf
          <xsl:number count="refsect3" format="{$format}"/>
Packit 0f19cf
        </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="simplesect" mode="label.markup">
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
                or local-name(..) = 'sect1'
Packit 0f19cf
                or local-name(..) = 'sect2'
Packit 0f19cf
                or local-name(..) = 'sect3'
Packit 0f19cf
                or local-name(..) = 'sect4'
Packit 0f19cf
                or local-name(..) = 'sect5'">
Packit 0f19cf
    <xsl:variable name="parent.section.label">
Packit 0f19cf
      <xsl:apply-templates select=".." mode="label.markup"/>
Packit 0f19cf
    </xsl:variable>
Packit 0f19cf
    <xsl:if test="$parent.section.label != ''">
Packit 0f19cf
      <xsl:apply-templates select=".." mode="label.markup"/>
Packit 0f19cf
      <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="parent.is.component">
Packit 0f19cf
    <xsl:call-template name="is.component">
Packit 0f19cf
      <xsl:with-param name="node" select=".."/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="label">
Packit 0f19cf
    <xsl:call-template name="label.this.section">
Packit 0f19cf
      <xsl:with-param name="section" select="."/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
                and $parent.is.component != 0">
Packit 0f19cf
    <xsl:variable name="parent.label">
Packit 0f19cf
      <xsl:apply-templates select=".." mode="label.markup"/>
Packit 0f19cf
    </xsl:variable>
Packit 0f19cf
    <xsl:if test="$parent.label != ''">
Packit 0f19cf
      <xsl:apply-templates select=".." mode="label.markup"/>
Packit 0f19cf
      <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="@label">
Packit 0f19cf
      <xsl:value-of select="@label"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:when test="$label != 0">
Packit 0f19cf
      <xsl:variable name="format">
Packit 0f19cf
        <xsl:call-template name="autolabel.format">
Packit 0f19cf
          <xsl:with-param name="format" select="$section.autolabel"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      <xsl:number format="{$format}" count="simplesect"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="qandadiv" mode="label.markup">
Packit 0f19cf
  
Packit 0f19cf
                                       |ancestor::book
Packit 0f19cf
                                       |ancestor::chapter
Packit 0f19cf
                                       |ancestor::appendix
Packit 0f19cf
                                       |ancestor::preface
Packit 0f19cf
                                       |ancestor::section
Packit 0f19cf
                                       |ancestor::simplesect
Packit 0f19cf
                                       |ancestor::sect1
Packit 0f19cf
                                       |ancestor::sect2
Packit 0f19cf
                                       |ancestor::sect3
Packit 0f19cf
                                       |ancestor::sect4
Packit 0f19cf
                                       |ancestor::sect5
Packit 0f19cf
                                       |ancestor::refsect1
Packit 0f19cf
                                       |ancestor::refsect2
Packit 0f19cf
                                       |ancestor::refsect3)[last()]"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="lparent.prefix">
Packit 0f19cf
    <xsl:apply-templates select="$lparent" mode="label.markup"/>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="prefix">
Packit 0f19cf
    <xsl:if test="$qanda.inherit.numeration != 0">
Packit 0f19cf
      <xsl:if test="$lparent.prefix != ''">
Packit 0f19cf
        <xsl:apply-templates select="$lparent" mode="label.markup"/>
Packit 0f19cf
        <xsl:apply-templates select="$lparent" mode="intralabel.punctuation"/>
Packit 0f19cf
      </xsl:if>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="$qandadiv.autolabel != 0">
Packit 0f19cf
      <xsl:variable name="format">
Packit 0f19cf
        <xsl:call-template name="autolabel.format">
Packit 0f19cf
          <xsl:with-param name="format" select="$qandadiv.autolabel"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      <xsl:value-of select="$prefix"/>
Packit 0f19cf
      <xsl:number level="multiple" count="qandadiv" format="{$format}"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="question|answer" mode="label.markup">
Packit 0f19cf
  
Packit 0f19cf
                                       |ancestor::book
Packit 0f19cf
                                       |ancestor::chapter
Packit 0f19cf
                                       |ancestor::appendix
Packit 0f19cf
                                       |ancestor::preface
Packit 0f19cf
                                       |ancestor::section
Packit 0f19cf
                                       |ancestor::simplesect
Packit 0f19cf
                                       |ancestor::sect1
Packit 0f19cf
                                       |ancestor::sect2
Packit 0f19cf
                                       |ancestor::sect3
Packit 0f19cf
                                       |ancestor::sect4
Packit 0f19cf
                                       |ancestor::sect5
Packit 0f19cf
                                       |ancestor::refsect1
Packit 0f19cf
                                       |ancestor::refsect2
Packit 0f19cf
                                       |ancestor::refsect3)[last()]"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="lparent.prefix">
Packit 0f19cf
    <xsl:apply-templates select="$lparent" mode="label.markup"/>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="prefix">
Packit 0f19cf
    <xsl:if test="$qanda.inherit.numeration != 0">
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
        <xsl:when test="ancestor::qandadiv">
Packit 0f19cf
          <xsl:apply-templates select="ancestor::qandadiv[1]" mode="label.markup"/>
Packit 0f19cf
          
Packit 0f19cf
                               mode="intralabel.punctuation"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:when test="$lparent.prefix != ''">
Packit 0f19cf
          <xsl:apply-templates select="$lparent" mode="label.markup"/>
Packit 0f19cf
          <xsl:apply-templates select="$lparent" mode="intralabel.punctuation"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
                select="ancestor-or-self::qandaset/@defaultlabel[1]"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="deflabel">
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      <xsl:when test="$inhlabel != ''">
Packit 0f19cf
        <xsl:value-of select="$inhlabel"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        <xsl:value-of select="$qanda.defaultlabel"/>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="label" select="label"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="count($label)>0">
Packit 0f19cf
      <xsl:apply-templates select="$label"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
Packit 0f19cf
    <xsl:when test="$deflabel = 'qanda' and local-name(.) = 'question'">
Packit 0f19cf
      <xsl:call-template name="gentext">
Packit 0f19cf
        <xsl:with-param name="key" select="'Question'"/>
Packit 0f19cf
      </xsl:call-template>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
Packit 0f19cf
    <xsl:when test="$deflabel = 'qanda' and local-name(.) = 'answer'">
Packit 0f19cf
      <xsl:call-template name="gentext">
Packit 0f19cf
        <xsl:with-param name="key" select="'Answer'"/>
Packit 0f19cf
      </xsl:call-template>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
Packit 0f19cf
    <xsl:when test="$deflabel = 'number' and local-name(.) = 'question'">
Packit 0f19cf
      <xsl:value-of select="$prefix"/>
Packit 0f19cf
      <xsl:number level="multiple" count="qandaentry" format="1"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
                     qandaset|index|setindex" mode="label.markup">
Packit 0f19cf
  <xsl:if test="@label">
Packit 0f19cf
    <xsl:value-of select="@label"/>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="figure|table|example" mode="label.markup">
Packit 0f19cf
  
Packit 0f19cf
                select="ancestor::chapter
Packit 0f19cf
                        |ancestor::appendix
Packit 0f19cf
                        |ancestor::article[ancestor::book]"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="prefix">
Packit 0f19cf
    <xsl:if test="count($pchap) > 0">
Packit 0f19cf
      <xsl:apply-templates select="$pchap" mode="label.markup"/>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="@label">
Packit 0f19cf
      <xsl:value-of select="@label"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:otherwise>
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
        <xsl:when test="$prefix != ''">
Packit 0f19cf
            <xsl:apply-templates select="$pchap" mode="label.markup"/>
Packit 0f19cf
            <xsl:apply-templates select="$pchap" mode="intralabel.punctuation"/>
Packit 0f19cf
          <xsl:number format="1" from="chapter|appendix" level="any"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:otherwise>
Packit 0f19cf
          <xsl:number format="1" from="book|article" level="any"/>
Packit 0f19cf
        </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="procedure" mode="label.markup">
Packit 0f19cf
  
Packit 0f19cf
                select="ancestor::chapter
Packit 0f19cf
                        |ancestor::appendix
Packit 0f19cf
                        |ancestor::article[ancestor::book]"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="prefix">
Packit 0f19cf
    <xsl:if test="count($pchap) > 0">
Packit 0f19cf
      <xsl:apply-templates select="$pchap" mode="label.markup"/>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="@label">
Packit 0f19cf
      <xsl:value-of select="@label"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:when test="$formal.procedures = 0">
Packit 0f19cf
      
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:otherwise>
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
        <xsl:when test="count($pchap)>0">
Packit 0f19cf
          <xsl:if test="$prefix != ''">
Packit 0f19cf
            <xsl:apply-templates select="$pchap" mode="label.markup"/>
Packit 0f19cf
            <xsl:apply-templates select="$pchap" mode="intralabel.punctuation"/>
Packit 0f19cf
          </xsl:if>
Packit 0f19cf
          
Packit 0f19cf
                      from="chapter|appendix" level="any"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:otherwise>
Packit 0f19cf
          
Packit 0f19cf
                      from="book|article" level="any"/>
Packit 0f19cf
        </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="equation" mode="label.markup">
Packit 0f19cf
  
Packit 0f19cf
                select="ancestor::chapter
Packit 0f19cf
                        |ancestor::appendix
Packit 0f19cf
                        |ancestor::article[ancestor::book]"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="prefix">
Packit 0f19cf
    <xsl:if test="count($pchap) > 0">
Packit 0f19cf
      <xsl:apply-templates select="$pchap" mode="label.markup"/>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="@label">
Packit 0f19cf
      <xsl:value-of select="@label"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:otherwise>
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
        <xsl:when test="count($pchap)>0">
Packit 0f19cf
          <xsl:if test="$prefix != ''">
Packit 0f19cf
            <xsl:apply-templates select="$pchap" mode="label.markup"/>
Packit 0f19cf
            <xsl:apply-templates select="$pchap" mode="intralabel.punctuation"/>
Packit 0f19cf
          </xsl:if>
Packit 0f19cf
          
Packit 0f19cf
	              from="chapter|appendix" level="any"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:otherwise>
Packit 0f19cf
          
Packit 0f19cf
	              from="book|article" level="any"/>
Packit 0f19cf
        </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="orderedlist/listitem" mode="label.markup">
Packit 0f19cf
  <xsl:variable name="numeration">
Packit 0f19cf
    <xsl:call-template name="list.numeration">
Packit 0f19cf
      <xsl:with-param name="node" select="parent::orderedlist"/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="type">
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      <xsl:when test="$numeration='arabic'">1</xsl:when>
Packit 0f19cf
      <xsl:when test="$numeration='loweralpha'">a</xsl:when>
Packit 0f19cf
      <xsl:when test="$numeration='lowerroman'">i</xsl:when>
Packit 0f19cf
      <xsl:when test="$numeration='upperalpha'">A</xsl:when>
Packit 0f19cf
      <xsl:when test="$numeration='upperroman'">I</xsl:when>
Packit 0f19cf
      
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        <xsl:message>
Packit 0f19cf
          <xsl:text>Unexpected numeration: </xsl:text>
Packit 0f19cf
          <xsl:value-of select="$numeration"/>
Packit 0f19cf
        </xsl:message>
Packit 0f19cf
        <xsl:value-of select="1."/>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="item-number">
Packit 0f19cf
    <xsl:call-template name="orderedlist-item-number"/>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:number value="$item-number" format="{$type}"/>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="abstract" mode="label.markup">
Packit 0f19cf
  
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="sidebar" mode="label.markup">
Packit 0f19cf
  
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template name="label.this.section">
Packit 0f19cf
  <xsl:param name="section" select="."/>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="level">
Packit 0f19cf
    <xsl:call-template name="section.level"/>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="$level <= $section.autolabel.max.depth">      
Packit 0f19cf
      <xsl:value-of select="$section.autolabel"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:otherwise>0</xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<doc:template name="label.this.section" xmlns="">
Packit 0f19cf
<refpurpose>Returns true if $section should be labelled</refpurpose>
Packit 0f19cf
<refdescription id="label.this.section-desc">
Packit 0f19cf
<para>Returns true if the specified section should be labelled.
Packit 0f19cf
By default, this template returns zero unless 
Packit 0f19cf
the section level is less than or equal to the value of the
Packit 0f19cf
<literal>$section.autolabel.max.depth</literal> parameter, in
Packit 0f19cf
which case it returns
Packit 0f19cf
<literal>$section.autolabel</literal>.
Packit 0f19cf
Custom stylesheets may override it to get more selective behavior.</para>
Packit 0f19cf
</refdescription>
Packit 0f19cf
</doc:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template name="default.autolabel.format">
Packit 0f19cf
  <xsl:param name="context" select="."/>
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="local-name($context) = 'appendix'">
Packit 0f19cf
      <xsl:value-of select="'A'"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:when test="local-name($context) = 'part'">
Packit 0f19cf
      <xsl:value-of select="'I'"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:otherwise>1</xsl:otherwise>
Packit 0f19cf
  </xsl:choose>  
Packit 0f19cf
</xsl:template>
Packit 0f19cf
  
Packit 0f19cf
<xsl:template name="autolabel.format">
Packit 0f19cf
  <xsl:param name="context" select="."/>
Packit 0f19cf
  <xsl:param name="format"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="string($format) != 0">
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
        <xsl:when test="string($format)='arabic' or $format='1'">1</xsl:when>
Packit 0f19cf
        <xsl:when test="$format='loweralpha' or $format='a'">
Packit 0f19cf
          <xsl:value-of select="'a'"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:when test="$format='lowerroman' or $format='i'">
Packit 0f19cf
          <xsl:value-of select="'i'"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:when test="$format='upperalpha' or $format='A'">
Packit 0f19cf
          <xsl:value-of select="'A'"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:when test="$format='upperroman' or $format='I'">
Packit 0f19cf
          <xsl:value-of select="'I'"/>
Packit 0f19cf
        </xsl:when>      
Packit 0f19cf
	<xsl:when test="$format='arabicindic' or $format='١'">
Packit 0f19cf
	  <xsl:value-of select="'١'"/>
Packit 0f19cf
	</xsl:when>
Packit 0f19cf
        <xsl:otherwise>
Packit 0f19cf
          <xsl:message>
Packit 0f19cf
            <xsl:text>Unexpected </xsl:text><xsl:value-of select="local-name(.)"/><xsl:text>.autolabel value: </xsl:text>
Packit 0f19cf
            <xsl:value-of select="$format"/><xsl:text>; using default.</xsl:text>
Packit 0f19cf
          </xsl:message>
Packit 0f19cf
          <xsl:call-template name="default.autolabel.format"/>
Packit 0f19cf
        </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<doc:template name="autolabel.format" xmlns="">
Packit 0f19cf
<refpurpose>Returns format for autolabel parameters</refpurpose>
Packit 0f19cf
<refdescription id="autolabel.format-desc">
Packit 0f19cf
<para>Returns format passed as parameter if non zero. Supported
Packit 0f19cf
  format are 'arabic' or '1', 'loweralpha' or 'a', 'lowerroman' or 'i', 
Packit 0f19cf
  'upperlapha' or 'A', 'upperroman' or 'I', 'arabicindic' or '١'.
Packit 0f19cf
  If its not one of these then 
Packit 0f19cf
  returns the default format.</para>
Packit 0f19cf
</refdescription>
Packit 0f19cf
</doc:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
</xsl:stylesheet>