diff options
| author | Remko Tronçon <git@el-tramo.be> | 2010-03-28 19:43:32 (GMT) | 
|---|---|---|
| committer | Remko Tronçon <git@el-tramo.be> | 2010-03-28 19:44:49 (GMT) | 
| commit | 3afa4f741c26360245dc313bc368f508b26a6b96 (patch) | |
| tree | 4fc9fedac990a099010fed8a4ee09ddc51c21cc5 /3rdParty/DocBook/XSL/html/lists.xsl | |
| parent | 7548dabae7d10e48816142e508be651ada9f7bc3 (diff) | |
| download | swift-3afa4f741c26360245dc313bc368f508b26a6b96.zip swift-3afa4f741c26360245dc313bc368f508b26a6b96.tar.bz2  | |
Added DocBook infrastructure.
Imported most of "DocBook kit".
Added placeholder for Swiften developers guide.
Diffstat (limited to '3rdParty/DocBook/XSL/html/lists.xsl')
| -rw-r--r-- | 3rdParty/DocBook/XSL/html/lists.xsl | 1183 | 
1 files changed, 1183 insertions, 0 deletions
diff --git a/3rdParty/DocBook/XSL/html/lists.xsl b/3rdParty/DocBook/XSL/html/lists.xsl new file mode 100644 index 0000000..424e2bb --- /dev/null +++ b/3rdParty/DocBook/XSL/html/lists.xsl @@ -0,0 +1,1183 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: lists.xsl 8435 2009-05-11 08:14:54Z bobstayton $ +     ******************************************************************** + +     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. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="itemizedlist"> +  <div> +    <xsl:call-template name="common.html.attributes"/> +    <xsl:call-template name="anchor"/> +    <xsl:if test="title"> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> + +    <!-- Preserve order of PIs and comments --> +    <xsl:apply-templates  +        select="*[not(self::listitem +                  or self::title +                  or self::titleabbrev)] +                |comment()[not(preceding-sibling::listitem)] +                |processing-instruction()[not(preceding-sibling::listitem)]"/> + +    <ul> +      <xsl:call-template name="generate.class.attribute"/> +      <xsl:if test="$css.decoration != 0"> +        <xsl:attribute name="type"> +          <xsl:call-template name="list.itemsymbol"/> +        </xsl:attribute> +      </xsl:if> + +      <xsl:if test="@spacing='compact'"> +        <xsl:attribute name="compact"> +          <xsl:value-of select="@spacing"/> +        </xsl:attribute> +      </xsl:if> +      <xsl:apply-templates  +            select="listitem +                    |comment()[preceding-sibling::listitem] +                    |processing-instruction()[preceding-sibling::listitem]"/> +    </ul> +  </div> +</xsl:template> + +<xsl:template match="itemizedlist/title"> +  <!-- nop --> +</xsl:template> + +<xsl:template match="itemizedlist/listitem"> +  <xsl:variable name="mark" select="../@mark"/> +  <xsl:variable name="override" select="@override"/> + +  <xsl:variable name="usemark"> +    <xsl:choose> +      <xsl:when test="$override != ''"> +        <xsl:value-of select="$override"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$mark"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="cssmark"> +    <xsl:choose> +      <xsl:when test="$usemark = 'opencircle'">circle</xsl:when> +      <xsl:when test="$usemark = 'bullet'">disc</xsl:when> +      <xsl:when test="$usemark = 'box'">square</xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$usemark"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <li> +    <xsl:call-template name="common.html.attributes"/> +    <xsl:if test="$css.decoration = '1' and $cssmark != ''"> +      <xsl:attribute name="style"> +        <xsl:text>list-style-type: </xsl:text> +        <xsl:value-of select="$cssmark"/> +      </xsl:attribute> +    </xsl:if> + +    <!-- we can't just drop the anchor in since some browsers (Opera) +         get confused about line breaks if we do. So if the first child +         is a para, assume the para will put in the anchor. Otherwise, +         put the anchor in anyway. --> +    <xsl:if test="local-name(child::*[1]) != 'para'"> +      <xsl:call-template name="anchor"/> +    </xsl:if> + +    <xsl:choose> +      <xsl:when test="$show.revisionflag != 0 and @revisionflag"> +        <div class="{@revisionflag}"> +          <xsl:apply-templates/> +        </div> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates/> +      </xsl:otherwise> +    </xsl:choose> +  </li> +</xsl:template> + +<xsl:template match="orderedlist"> +  <xsl:variable name="start"> +    <xsl:call-template name="orderedlist-starting-number"/> +  </xsl:variable> + +  <xsl:variable name="numeration"> +    <xsl:call-template name="list.numeration"/> +  </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> + +  <div> +    <xsl:call-template name="common.html.attributes"/> +    <xsl:call-template name="anchor"/> + +    <xsl:if test="title"> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> + +    <!-- Preserve order of PIs and comments --> +    <xsl:apply-templates  +        select="*[not(self::listitem +                  or self::title +                  or self::titleabbrev)] +                |comment()[not(preceding-sibling::listitem)] +                |processing-instruction()[not(preceding-sibling::listitem)]"/> + +    <xsl:choose> +      <xsl:when test="@inheritnum='inherit' and ancestor::listitem[parent::orderedlist]"> +        <table border="0"> +          <xsl:call-template name="generate.class.attribute"/> +          <col align="{$direction.align.start}" valign="top"/> +          <tbody> +            <xsl:apply-templates  +                mode="orderedlist-table" +                select="listitem +                        |comment()[preceding-sibling::listitem] +                        |processing-instruction()[preceding-sibling::listitem]"/> +          </tbody> +        </table> +      </xsl:when> +      <xsl:otherwise> +        <ol> +          <xsl:call-template name="generate.class.attribute"/> +          <xsl:if test="$start != '1'"> +            <xsl:attribute name="start"> +              <xsl:value-of select="$start"/> +            </xsl:attribute> +          </xsl:if> +          <xsl:if test="$numeration != ''"> +            <xsl:attribute name="type"> +              <xsl:value-of select="$type"/> +            </xsl:attribute> +          </xsl:if> +          <xsl:if test="@spacing='compact'"> +            <xsl:attribute name="compact"> +              <xsl:value-of select="@spacing"/> +            </xsl:attribute> +          </xsl:if> +          <xsl:apply-templates  +                select="listitem +                        |comment()[preceding-sibling::listitem] +                        |processing-instruction()[preceding-sibling::listitem]"/> +        </ol> +      </xsl:otherwise> +    </xsl:choose> +  </div> +</xsl:template> + +<xsl:template match="orderedlist/title"> +  <!-- nop --> +</xsl:template> + +<xsl:template match="orderedlist/listitem"> +  <li> +    <xsl:call-template name="common.html.attributes"/> +    <xsl:if test="@override"> +      <xsl:attribute name="value"> +        <xsl:value-of select="@override"/> +      </xsl:attribute> +    </xsl:if> + +    <!-- we can't just drop the anchor in since some browsers (Opera) +         get confused about line breaks if we do. So if the first child +         is a para, assume the para will put in the anchor. Otherwise, +         put the anchor in anyway. --> +    <xsl:if test="local-name(child::*[1]) != 'para'"> +      <xsl:call-template name="anchor"/> +    </xsl:if> + +    <xsl:choose> +      <xsl:when test="$show.revisionflag != 0 and @revisionflag"> +        <div class="{@revisionflag}"> +          <xsl:apply-templates/> +        </div> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates/> +      </xsl:otherwise> +    </xsl:choose> +  </li> +</xsl:template> + +<xsl:template match="orderedlist/listitem" mode="orderedlist-table"> +  <tr> +    <td> +      <xsl:apply-templates select="." mode="item-number"/> +    </td> +    <td> +      <xsl:if test="local-name(child::*[1]) != 'para'"> +        <xsl:call-template name="anchor"/> +      </xsl:if> + +      <xsl:choose> +        <xsl:when test="$show.revisionflag != 0 and @revisionflag"> +          <div class="{@revisionflag}"> +            <xsl:apply-templates/> +          </div> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates/> +        </xsl:otherwise> +      </xsl:choose> +    </td> +  </tr> +</xsl:template> + +<xsl:template match="variablelist"> +  <xsl:variable name="pi-presentation"> +    <xsl:call-template name="pi.dbhtml_list-presentation"/> +  </xsl:variable> + +  <xsl:variable name="presentation"> +    <xsl:choose> +      <xsl:when test="$pi-presentation != ''"> +        <xsl:value-of select="$pi-presentation"/> +      </xsl:when> +      <xsl:when test="$variablelist.as.table != 0"> +        <xsl:value-of select="'table'"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="'list'"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="list-width"> +    <xsl:call-template name="pi.dbhtml_list-width"/> +  </xsl:variable> + +  <xsl:variable name="term-width"> +    <xsl:call-template name="pi.dbhtml_term-width"/> +  </xsl:variable> + +  <xsl:variable name="table-summary"> +    <xsl:call-template name="pi.dbhtml_table-summary"/> +  </xsl:variable> + +  <div> +    <xsl:call-template name="common.html.attributes"/> +    <xsl:call-template name="anchor"/> +    <xsl:if test="title"> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> + +    <xsl:choose> +      <xsl:when test="$presentation = 'table'"> +        <!-- Preserve order of PIs and comments --> +        <xsl:apply-templates  +          select="*[not(self::varlistentry +                    or self::title +                    or self::titleabbrev)] +                  |comment()[not(preceding-sibling::varlistentry)] +                  |processing-instruction()[not(preceding-sibling::varlistentry)]"/> +        <table border="0"> +          <xsl:if test="$list-width != ''"> +            <xsl:attribute name="width"> +              <xsl:value-of select="$list-width"/> +            </xsl:attribute> +          </xsl:if> +          <xsl:if test="$table-summary != ''"> +            <xsl:attribute name="summary"> +              <xsl:value-of select="$table-summary"/> +            </xsl:attribute> +          </xsl:if> +          <col align="{$direction.align.start}" valign="top"> +            <xsl:if test="$term-width != ''"> +              <xsl:attribute name="width"> +                <xsl:value-of select="$term-width"/> +              </xsl:attribute> +            </xsl:if> +          </col> +          <tbody> +            <xsl:apply-templates mode="varlist-table" +              select="varlistentry +                      |comment()[preceding-sibling::varlistentry] +                      |processing-instruction()[preceding-sibling::varlistentry]"/> +          </tbody> +        </table> +      </xsl:when> +      <xsl:otherwise> +        <!-- Preserve order of PIs and comments --> +        <xsl:apply-templates  +          select="*[not(self::varlistentry +                    or self::title +                    or self::titleabbrev)] +                  |comment()[not(preceding-sibling::varlistentry)] +                  |processing-instruction()[not(preceding-sibling::varlistentry)]"/> +        <dl> +          <xsl:apply-templates  +              select="varlistentry +                      |comment()[preceding-sibling::varlistentry] +                      |processing-instruction()[preceding-sibling::varlistentry]"/> +        </dl> +      </xsl:otherwise> +    </xsl:choose> +  </div> +</xsl:template> + +<xsl:template match="variablelist/title"> +  <!-- nop --> +</xsl:template> + +<xsl:template match="itemizedlist/titleabbrev|orderedlist/titleabbrev"> +  <!--nop--> +</xsl:template> + +<xsl:template match="variablelist/titleabbrev"> +  <!--nop--> +</xsl:template> + +<xsl:template match="listitem" mode="xref"> +  <xsl:number format="1"/> +</xsl:template> + +<xsl:template match="listitem/simpara" priority="2"> +  <!-- If a listitem contains only a single simpara, don't output +       the <p> wrapper; this has the effect of creating an li +       with simple text content. --> +  <xsl:choose> +    <xsl:when test="not(preceding-sibling::*) +                    and not (following-sibling::*)"> +      <xsl:call-template name="anchor"/> +      <xsl:apply-templates/> +    </xsl:when> +    <xsl:otherwise> +      <p> +        <xsl:choose> +          <xsl:when test="@role and $para.propagates.style != 0"> +            <xsl:call-template name="common.html.attributes"> +              <xsl:with-param name="class" select="@role"/> +            </xsl:call-template> +          </xsl:when> +          <xsl:otherwise> +            <xsl:call-template name="common.html.attributes"/> +          </xsl:otherwise> +        </xsl:choose> + +        <xsl:call-template name="anchor"/> +        <xsl:apply-templates/> +      </p> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="varlistentry"> +  <dt> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates select="term"/> +  </dt> +  <dd> +    <xsl:apply-templates select="listitem"/> +  </dd> +</xsl:template> + +<xsl:template match="varlistentry" mode="varlist-table"> +  <xsl:variable name="presentation"> +    <xsl:call-template name="pi.dbhtml_term-presentation"> +      <xsl:with-param name="node" select=".."/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="separator"> +    <xsl:call-template name="pi.dbhtml_term-separator"> +      <xsl:with-param name="node" select=".."/> +    </xsl:call-template> +  </xsl:variable> +  <tr> +    <xsl:call-template name="tr.attributes"> +      <xsl:with-param name="rownum"> +        <xsl:number from="variablelist" count="varlistentry"/> +      </xsl:with-param> +    </xsl:call-template> + +    <td> +      <p> +      <xsl:call-template name="anchor"/> +      <xsl:choose> +        <xsl:when test="$presentation = 'bold'"> +          <b> +            <xsl:apply-templates select="term"/> +            <xsl:value-of select="$separator"/> +          </b> +        </xsl:when> +        <xsl:when test="$presentation = 'italic'"> +          <i> +            <xsl:apply-templates select="term"/> +            <xsl:value-of select="$separator"/> +          </i> +        </xsl:when> +        <xsl:when test="$presentation = 'bold-italic'"> +          <b> +            <i> +              <xsl:apply-templates select="term"/> +              <xsl:value-of select="$separator"/> +            </i> +          </b> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates select="term"/> +          <xsl:value-of select="$separator"/> +        </xsl:otherwise> +      </xsl:choose> +      </p> +    </td> +    <td> +      <xsl:apply-templates select="listitem"/> +    </td> +  </tr> +</xsl:template> + +<xsl:template match="varlistentry/term"> +  <span> +    <xsl:call-template name="common.html.attributes"/> +    <xsl:call-template name="anchor"/> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +    <xsl:choose> +      <xsl:when test="position() = last()"/> <!-- do nothing --> +      <xsl:otherwise> +        <!-- * if we have multiple terms in the same varlistentry, generate --> +        <!-- * a separator (", " by default) and/or an additional line --> +        <!-- * break after each one except the last --> +        <xsl:value-of select="$variablelist.term.separator"/> +        <xsl:if test="not($variablelist.term.break.after = '0')"> +          <br/> +        </xsl:if> +      </xsl:otherwise> +    </xsl:choose> +  </span> +</xsl:template> + +<xsl:template match="varlistentry/listitem"> +  <!-- we can't just drop the anchor in since some browsers (Opera) +       get confused about line breaks if we do. So if the first child +       is a para, assume the para will put in the anchor. Otherwise, +       put the anchor in anyway. --> +  <xsl:if test="local-name(child::*[1]) != 'para'"> +    <xsl:call-template name="anchor"/> +  </xsl:if> + +  <xsl:choose> +    <xsl:when test="$show.revisionflag != 0 and @revisionflag"> +      <div class="{@revisionflag}"> +        <xsl:apply-templates/> +      </div> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="simplelist"> +  <!-- with no type specified, the default is 'vert' --> +  <xsl:call-template name="anchor"/> +  <table border="0" summary="Simple list"> +    <xsl:call-template name="common.html.attributes"/> +    <xsl:call-template name="simplelist.vert"> +      <xsl:with-param name="cols"> +        <xsl:choose> +          <xsl:when test="@columns"> +            <xsl:value-of select="@columns"/> +          </xsl:when> +          <xsl:otherwise>1</xsl:otherwise> +        </xsl:choose> +      </xsl:with-param> +    </xsl:call-template> +  </table> +</xsl:template> + +<xsl:template match="simplelist[@type='inline']"> +  <span> +    <xsl:call-template name="common.html.attributes"/> +    <!-- if dbchoice PI exists, use that to determine the choice separator --> +    <!-- (that is, equivalent of "and" or "or" in current locale), or literal --> +    <!-- value of "choice" otherwise --> +    <xsl:variable name="localized-choice-separator"> +      <xsl:choose> +        <xsl:when test="processing-instruction('dbchoice')"> +          <xsl:call-template name="select.choice.separator"/> +        </xsl:when> +        <xsl:otherwise> +          <!-- empty --> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +   +    <xsl:for-each select="member"> +      <xsl:call-template name="simple.xlink"> +        <xsl:with-param name="content"> +          <xsl:apply-templates/> +        </xsl:with-param> +      </xsl:call-template> +      <xsl:choose> +        <xsl:when test="position() = last()"/> <!-- do nothing --> +        <xsl:otherwise> +          <xsl:text>, </xsl:text> +          <xsl:if test="position() = last() - 1"> +            <xsl:if test="$localized-choice-separator != ''"> +              <xsl:value-of select="$localized-choice-separator"/> +              <xsl:text> </xsl:text> +            </xsl:if> +          </xsl:if> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:for-each> +  </span> +</xsl:template> + +<xsl:template match="simplelist[@type='horiz']"> +  <xsl:call-template name="anchor"/> +  <table border="0" summary="Simple list"> +    <xsl:call-template name="common.html.attributes"/> +    <xsl:call-template name="simplelist.horiz"> +      <xsl:with-param name="cols"> +        <xsl:choose> +          <xsl:when test="@columns"> +            <xsl:value-of select="@columns"/> +          </xsl:when> +          <xsl:otherwise>1</xsl:otherwise> +        </xsl:choose> +      </xsl:with-param> +    </xsl:call-template> +  </table> +</xsl:template> + +<xsl:template match="simplelist[@type='vert']"> +  <xsl:call-template name="anchor"/> +  <table border="0" summary="Simple list"> +    <xsl:call-template name="common.html.attributes"/> +    <xsl:call-template name="simplelist.vert"> +      <xsl:with-param name="cols"> +        <xsl:choose> +          <xsl:when test="@columns"> +            <xsl:value-of select="@columns"/> +          </xsl:when> +          <xsl:otherwise>1</xsl:otherwise> +        </xsl:choose> +      </xsl:with-param> +    </xsl:call-template> +  </table> +</xsl:template> + +<xsl:template name="simplelist.horiz"> +  <xsl:param name="cols">1</xsl:param> +  <xsl:param name="cell">1</xsl:param> +  <xsl:param name="members" select="./member"/> + +  <xsl:if test="$cell <= count($members)"> +    <tr> +      <xsl:call-template name="tr.attributes"> +        <xsl:with-param name="row" select="$members[1]"/> +        <xsl:with-param name="rownum" select="(($cell - 1) div $cols) + 1"/> +      </xsl:call-template> + +      <xsl:call-template name="simplelist.horiz.row"> +        <xsl:with-param name="cols" select="$cols"/> +        <xsl:with-param name="cell" select="$cell"/> +        <xsl:with-param name="members" select="$members"/> +      </xsl:call-template> +   </tr> +    <xsl:call-template name="simplelist.horiz"> +      <xsl:with-param name="cols" select="$cols"/> +      <xsl:with-param name="cell" select="$cell + $cols"/> +      <xsl:with-param name="members" select="$members"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template name="simplelist.horiz.row"> +  <xsl:param name="cols">1</xsl:param> +  <xsl:param name="cell">1</xsl:param> +  <xsl:param name="members" select="./member"/> +  <xsl:param name="curcol">1</xsl:param> + +  <xsl:if test="$curcol <= $cols"> +    <td> +      <xsl:choose> +        <xsl:when test="$members[position()=$cell]"> +          <xsl:apply-templates select="$members[position()=$cell]"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:text> </xsl:text> +        </xsl:otherwise> +      </xsl:choose> +    </td> +    <xsl:call-template name="simplelist.horiz.row"> +      <xsl:with-param name="cols" select="$cols"/> +      <xsl:with-param name="cell" select="$cell+1"/> +      <xsl:with-param name="members" select="$members"/> +      <xsl:with-param name="curcol" select="$curcol+1"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template name="simplelist.vert"> +  <xsl:param name="cols">1</xsl:param> +  <xsl:param name="cell">1</xsl:param> +  <xsl:param name="members" select="./member"/> +  <xsl:param name="rows" +             select="floor((count($members)+$cols - 1) div $cols)"/> + +  <xsl:if test="$cell <= $rows"> +    <tr> +      <xsl:call-template name="tr.attributes"> +        <xsl:with-param name="row" select="$members[1]"/> +        <xsl:with-param name="rownum" select="$cell"/> +      </xsl:call-template> + +      <xsl:call-template name="simplelist.vert.row"> +        <xsl:with-param name="cols" select="$cols"/> +        <xsl:with-param name="rows" select="$rows"/> +        <xsl:with-param name="cell" select="$cell"/> +        <xsl:with-param name="members" select="$members"/> +      </xsl:call-template> +    </tr> +    <xsl:call-template name="simplelist.vert"> +      <xsl:with-param name="cols" select="$cols"/> +      <xsl:with-param name="cell" select="$cell+1"/> +      <xsl:with-param name="members" select="$members"/> +      <xsl:with-param name="rows" select="$rows"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template name="simplelist.vert.row"> +  <xsl:param name="cols">1</xsl:param> +  <xsl:param name="rows">1</xsl:param> +  <xsl:param name="cell">1</xsl:param> +  <xsl:param name="members" select="./member"/> +  <xsl:param name="curcol">1</xsl:param> + +  <xsl:if test="$curcol <= $cols"> +    <td> +      <xsl:choose> +        <xsl:when test="$members[position()=$cell]"> +          <xsl:apply-templates select="$members[position()=$cell]"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:text> </xsl:text> +        </xsl:otherwise> +      </xsl:choose> +    </td> +    <xsl:call-template name="simplelist.vert.row"> +      <xsl:with-param name="cols" select="$cols"/> +      <xsl:with-param name="rows" select="$rows"/> +      <xsl:with-param name="cell" select="$cell+$rows"/> +      <xsl:with-param name="members" select="$members"/> +      <xsl:with-param name="curcol" select="$curcol+1"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template match="member"> +  <xsl:call-template name="anchor"/> +  <xsl:call-template name="simple.xlink"> +    <xsl:with-param name="content"> +      <xsl:apply-templates/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="procedure"> +  <xsl:variable name="param.placement" +                select="substring-after(normalize-space($formal.title.placement), +                                        concat(local-name(.), ' '))"/> + +  <xsl:variable name="placement"> +    <xsl:choose> +      <xsl:when test="contains($param.placement, ' ')"> +        <xsl:value-of select="substring-before($param.placement, ' ')"/> +      </xsl:when> +      <xsl:when test="$param.placement = ''">before</xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$param.placement"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <!-- Preserve order of PIs and comments --> +  <xsl:variable name="preamble" +        select="*[not(self::step +                  or self::title +                  or self::titleabbrev)] +                |comment()[not(preceding-sibling::step)] +                |processing-instruction()[not(preceding-sibling::step)]"/> + +  <div> +    <xsl:call-template name="common.html.attributes"/> +    <xsl:call-template name="anchor"> +      <xsl:with-param name="conditional"> +        <xsl:choose> +          <xsl:when test="title">0</xsl:when> +          <xsl:otherwise>1</xsl:otherwise> +        </xsl:choose> +      </xsl:with-param> +    </xsl:call-template> + +    <xsl:if test="title and $placement = 'before'"> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> + +    <xsl:apply-templates select="$preamble"/> + +    <xsl:choose> +      <xsl:when test="count(step) = 1"> +        <ul> +          <xsl:call-template name="generate.class.attribute"/> +          <xsl:apply-templates  +            select="step +                    |comment()[preceding-sibling::step] +                    |processing-instruction()[preceding-sibling::step]"/> +        </ul> +      </xsl:when> +      <xsl:otherwise> +        <ol> +          <xsl:call-template name="generate.class.attribute"/> +          <xsl:attribute name="type"> +            <xsl:value-of select="substring($procedure.step.numeration.formats,1,1)"/> +          </xsl:attribute> +          <xsl:apply-templates  +            select="step +                    |comment()[preceding-sibling::step] +                    |processing-instruction()[preceding-sibling::step]"/> +        </ol> +      </xsl:otherwise> +    </xsl:choose> + +    <xsl:if test="title and $placement != 'before'"> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> +  </div> +</xsl:template> + +<xsl:template match="procedure/title"> +  <!-- nop --> +</xsl:template> + +<xsl:template match="substeps"> +  <xsl:variable name="numeration"> +    <xsl:call-template name="procedure.step.numeration"/> +  </xsl:variable> + +  <xsl:call-template name="anchor"/> + +  <ol type="{$numeration}"> +    <xsl:call-template name="common.html.attributes"/> +    <xsl:apply-templates/> +  </ol> +</xsl:template> + +<xsl:template match="step"> +  <li> +    <xsl:call-template name="common.html.attributes"/> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates/> +  </li> +</xsl:template> + +<xsl:template match="stepalternatives"> +  <xsl:call-template name="anchor"/> +  <ul> +    <xsl:call-template name="common.html.attributes"/> +    <xsl:apply-templates/> +  </ul> +</xsl:template> + +<xsl:template match="step/title"> +  <p> +    <xsl:call-template name="common.html.attributes"/> +    <b> +      <xsl:apply-templates/> +    </b> +  </p> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="segmentedlist"> +  <xsl:variable name="presentation"> +    <xsl:call-template name="pi.dbhtml_list-presentation"/> +  </xsl:variable> + +  <div> +    <xsl:call-template name="common.html.attributes"/> +    <xsl:call-template name="anchor"/> + +    <xsl:choose> +      <xsl:when test="$presentation = 'table'"> +        <xsl:apply-templates select="." mode="seglist-table"/> +      </xsl:when> +      <xsl:when test="$presentation = 'list'"> +        <xsl:apply-templates/> +      </xsl:when> +      <xsl:when test="$segmentedlist.as.table != 0"> +        <xsl:apply-templates select="." mode="seglist-table"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates/> +      </xsl:otherwise> +    </xsl:choose> +  </div> +</xsl:template> + +<xsl:template match="segmentedlist/title"> +  <div> +    <xsl:call-template name="common.html.attributes"/> +    <strong> +      <span> +        <xsl:call-template name="generate.class.attribute"/> +        <xsl:apply-templates/> +      </span> +    </strong> +  </div> +</xsl:template> + +<xsl:template match="segtitle"> +</xsl:template> + +<xsl:template match="segtitle" mode="segtitle-in-seg"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="seglistitem"> +  <div> +    <xsl:call-template name="common.html.attributes"/> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates/> +  </div> +</xsl:template> + +<xsl:template match="seg"> +  <xsl:variable name="segnum" select="count(preceding-sibling::seg)+1"/> +  <xsl:variable name="seglist" select="ancestor::segmentedlist"/> +  <xsl:variable name="segtitles" select="$seglist/segtitle"/> + +  <!-- +     Note: segtitle is only going to be the right thing in a well formed +     SegmentedList.  If there are too many Segs or too few SegTitles, +     you'll get something odd...maybe an error +  --> + +  <div> +    <xsl:call-template name="common.html.attributes"/> +    <strong> +      <span class="segtitle"> +        <xsl:apply-templates select="$segtitles[$segnum=position()]" +                             mode="segtitle-in-seg"/> +        <xsl:text>: </xsl:text> +      </span> +    </strong> +    <xsl:apply-templates/> +  </div> +</xsl:template> + +<xsl:template match="segmentedlist" mode="seglist-table"> +  <xsl:variable name="table-summary"> +    <xsl:call-template name="pi.dbhtml_table-summary"/> +  </xsl:variable> + +  <xsl:variable name="list-width"> +    <xsl:call-template name="pi.dbhtml_list-width"/> +  </xsl:variable> + +  <xsl:apply-templates select="title"/> + +  <table border="0"> +    <xsl:if test="$list-width != ''"> +      <xsl:attribute name="width"> +        <xsl:value-of select="$list-width"/> +      </xsl:attribute> +    </xsl:if> +    <xsl:if test="$table-summary != ''"> +      <xsl:attribute name="summary"> +        <xsl:value-of select="$table-summary"/> +      </xsl:attribute> +    </xsl:if> +    <thead> +      <tr class="segtitle"> +        <xsl:call-template name="tr.attributes"> +          <xsl:with-param name="row" select="segtitle[1]"/> +          <xsl:with-param name="rownum" select="1"/> +        </xsl:call-template> +        <xsl:apply-templates select="segtitle" mode="seglist-table"/> +      </tr> +    </thead> +    <tbody> +      <xsl:apply-templates select="seglistitem" mode="seglist-table"/> +    </tbody> +  </table> +</xsl:template> + +<xsl:template match="segtitle" mode="seglist-table"> +  <th><xsl:apply-templates/></th> +</xsl:template> + +<xsl:template match="seglistitem" mode="seglist-table"> +  <xsl:variable name="seglinum"> +    <xsl:number from="segmentedlist" count="seglistitem"/> +  </xsl:variable> + +  <tr> +    <xsl:call-template name="common.html.attributes"/> +    <xsl:call-template name="tr.attributes"> +      <xsl:with-param name="rownum" select="$seglinum + 1"/> +    </xsl:call-template> +    <xsl:apply-templates mode="seglist-table"/> +  </tr> +</xsl:template> + +<xsl:template match="seg" mode="seglist-table"> +  <td> +    <xsl:call-template name="common.html.attributes"/> +    <xsl:apply-templates/> +  </td> +</xsl:template> + +<xsl:template match="seg[1]" mode="seglist-table"> +  <td> +    <xsl:call-template name="common.html.attributes"/> +    <xsl:call-template name="anchor"> +      <xsl:with-param name="node" select="ancestor::seglistitem"/> +    </xsl:call-template> +    <xsl:apply-templates/> +  </td> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="calloutlist"> +  <div> +    <xsl:call-template name="common.html.attributes"/> +    <xsl:call-template name="anchor"/> +    <xsl:if test="title|info/title"> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> + +    <!-- Preserve order of PIs and comments --> +    <xsl:apply-templates  +         select="*[not(self::callout or self::title or self::titleabbrev)] +                   |comment()[not(preceding-sibling::callout)] +                   |processing-instruction()[not(preceding-sibling::callout)]"/> + +    <xsl:choose> +      <xsl:when test="$callout.list.table != 0"> +        <table border="0" summary="Callout list"> +          <xsl:apply-templates select="callout +                                |comment()[preceding-sibling::callout] +                                |processing-instruction()[preceding-sibling::callout]"/> +        </table> +      </xsl:when> +      <xsl:otherwise> +        <dl compact="compact"> +          <xsl:apply-templates select="callout +                                |comment()[preceding-sibling::callout] +                                |processing-instruction()[preceding-sibling::callout]"/> +        </dl> +      </xsl:otherwise> +    </xsl:choose> +  </div> +</xsl:template> + +<xsl:template match="calloutlist/title"> +</xsl:template> + +<xsl:template match="callout"> +  <xsl:choose> +    <xsl:when test="$callout.list.table != 0"> +      <tr> +        <xsl:call-template name="tr.attributes"> +          <xsl:with-param name="rownum"> +            <xsl:number from="calloutlist" count="callout"/> +          </xsl:with-param> +        </xsl:call-template> + +        <td width="5%" valign="top" align="{$direction.align.start}"> +          <p> +            <xsl:call-template name="anchor"/> +            <xsl:call-template name="callout.arearefs"> +              <xsl:with-param name="arearefs" select="@arearefs"/> +            </xsl:call-template> +          </p> +        </td> +        <td valign="top" align="{$direction.align.start}"> +          <xsl:apply-templates/> +        </td> +      </tr> +    </xsl:when> +    <xsl:otherwise> +      <dt> +        <xsl:call-template name="anchor"/> +        <xsl:call-template name="callout.arearefs"> +          <xsl:with-param name="arearefs" select="@arearefs"/> +        </xsl:call-template> +      </dt> +      <dd><xsl:apply-templates/></dd> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="callout/simpara" priority="2"> +  <!-- If a callout contains only a single simpara, don't output +       the <p> wrapper; this has the effect of creating an li +       with simple text content. --> +  <xsl:choose> +    <xsl:when test="not(preceding-sibling::*) +                    and not (following-sibling::*)"> +      <xsl:call-template name="anchor"/> +      <xsl:apply-templates/> +    </xsl:when> +    <xsl:otherwise> +      <p> +        <xsl:if test="@role and $para.propagates.style != 0"> +          <xsl:choose> +            <xsl:when test="@role and $para.propagates.style != 0"> +              <xsl:call-template name="common.html.attributes"> +                <xsl:with-param name="class" select="@role"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:otherwise> +              <xsl:call-template name="common.html.attributes"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:if> + +        <xsl:call-template name="anchor"/> +        <xsl:apply-templates/> +      </p> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="callout.arearefs"> +  <xsl:param name="arearefs"></xsl:param> +  <xsl:if test="$arearefs!=''"> +    <xsl:choose> +      <xsl:when test="substring-before($arearefs,' ')=''"> +        <xsl:call-template name="callout.arearef"> +          <xsl:with-param name="arearef" select="$arearefs"/> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +        <xsl:call-template name="callout.arearef"> +          <xsl:with-param name="arearef" +                          select="substring-before($arearefs,' ')"/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:call-template name="callout.arearefs"> +      <xsl:with-param name="arearefs" +                      select="substring-after($arearefs,' ')"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template name="callout.arearef"> +  <xsl:param name="arearef"></xsl:param> +  <xsl:variable name="targets" select="key('id',$arearef)"/> +  <xsl:variable name="target" select="$targets[1]"/> + +  <xsl:call-template name="check.id.unique"> +    <xsl:with-param name="linkend" select="$arearef"/> +  </xsl:call-template> + +  <xsl:choose> +    <xsl:when test="count($target)=0"> +      <xsl:text>???</xsl:text> +    </xsl:when> +    <xsl:when test="local-name($target)='co'"> +      <a> +        <xsl:attribute name="href"> +          <xsl:text>#</xsl:text> +          <xsl:value-of select="$arearef"/> +        </xsl:attribute> +        <xsl:apply-templates select="$target" mode="callout-bug"/> +      </a> +      <xsl:text> </xsl:text> +    </xsl:when> +    <xsl:when test="local-name($target)='areaset'"> +      <xsl:call-template name="callout-bug"> +        <xsl:with-param name="conum"> +          <xsl:apply-templates select="$target" mode="conumber"/> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="local-name($target)='area'"> +      <xsl:choose> +        <xsl:when test="$target/parent::areaset"> +          <xsl:call-template name="callout-bug"> +            <xsl:with-param name="conum"> +              <xsl:apply-templates select="$target/parent::areaset" +                                   mode="conumber"/> +            </xsl:with-param> +          </xsl:call-template> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="callout-bug"> +            <xsl:with-param name="conum"> +              <xsl:apply-templates select="$target" mode="conumber"/> +            </xsl:with-param> +          </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text>???</xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="orderedlist-starting-number"> +  <xsl:param name="list" select="."/> +  <xsl:variable name="pi-start"> +    <xsl:call-template name="pi.dbhtml_start"> +      <xsl:with-param name="node" select="$list"/> +    </xsl:call-template> +  </xsl:variable> +  <xsl:call-template name="output-orderedlist-starting-number"> +    <xsl:with-param name="list" select="$list"/> +    <xsl:with-param name="pi-start" select="$pi-start"/> +  </xsl:call-template> +</xsl:template> + +</xsl:stylesheet>  | 
 Swift