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