| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612 | <?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                xmlns:fo="http://www.w3.org/1999/XSL/Format"                version='1.0'><!-- ********************************************************************     $Id$     ********************************************************************     This file is part of the XSL DocBook Stylesheet distribution.     See ../README or http://nwalsh.com/docbook/xsl/ for copyright     and other information.     ******************************************************************** --><!-- ==================================================================== --><!-- What should we do about styling blockinfo? --><xsl:template match="blockinfo|info">  <!-- suppress --></xsl:template><!-- ==================================================================== --><xsl:template name="block.object">  <fo:block>    <xsl:call-template name="anchor"/>    <xsl:apply-templates/>  </fo:block></xsl:template><!-- ==================================================================== --><xsl:template match="para">  <fo:block xsl:use-attribute-sets="normal.para.spacing">    <xsl:call-template name="anchor"/>    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="simpara">  <fo:block xsl:use-attribute-sets="normal.para.spacing">    <xsl:call-template name="anchor"/>    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="formalpara">  <fo:block xsl:use-attribute-sets="normal.para.spacing">    <xsl:call-template name="anchor"/>    <xsl:apply-templates/>  </fo:block></xsl:template><!-- Only use title from info --><xsl:template match="formalpara/info">  <xsl:apply-templates select="title"/></xsl:template><xsl:template match="formalpara/title|formalpara/info/title">  <xsl:variable name="titleStr">      <xsl:apply-templates/>  </xsl:variable>  <xsl:variable name="lastChar">    <xsl:if test="$titleStr != ''">      <xsl:value-of select="substring($titleStr,string-length($titleStr),1)"/>    </xsl:if>  </xsl:variable>  <fo:inline font-weight="bold"             keep-with-next.within-line="always"             padding-end="1em">    <xsl:copy-of select="$titleStr"/>    <xsl:if test="$lastChar != ''                  and not(contains($runinhead.title.end.punct, $lastChar))">      <xsl:value-of select="$runinhead.default.title.end.punct"/>    </xsl:if>    <xsl:text> </xsl:text>  </fo:inline></xsl:template><xsl:template match="formalpara/para">  <xsl:apply-templates/></xsl:template><!-- ==================================================================== --><xsl:template match="blockquote">  <fo:block xsl:use-attribute-sets="blockquote.properties">    <xsl:call-template name="anchor"/>    <fo:block>      <xsl:if test="title|info/title">        <fo:block xsl:use-attribute-sets="formal.title.properties">          <xsl:apply-templates select="." mode="object.title.markup"/>        </fo:block>      </xsl:if>      <xsl:apply-templates select="*[local-name(.) != 'title'                                   and local-name(.) != 'attribution']"/>    </fo:block>    <xsl:if test="attribution">      <fo:block text-align="right">        <!-- mdash -->        <xsl:text>—</xsl:text>        <xsl:apply-templates select="attribution"/>      </fo:block>    </xsl:if>  </fo:block></xsl:template><xsl:template match="epigraph">  <fo:block>    <xsl:call-template name="anchor"/>    <xsl:apply-templates select="para|simpara|formalpara|literallayout"/>    <xsl:if test="attribution">      <fo:inline>        <xsl:text>--</xsl:text>        <xsl:apply-templates select="attribution"/>      </fo:inline>    </xsl:if>  </fo:block></xsl:template><xsl:template match="attribution">  <fo:inline><xsl:apply-templates/></fo:inline></xsl:template><!-- ==================================================================== --><xsl:template name="floater">  <xsl:param name="position" select="'none'"/>  <xsl:param name="clear" select="'both'"/>  <xsl:param name="width"/>  <xsl:param name="content"/>  <xsl:param name="start.indent">0pt</xsl:param>  <xsl:param name="end.indent">0pt</xsl:param>  <xsl:choose>    <xsl:when test="not($fop.extensions = 0)">      <!-- fop 0.20.5 does not support floats -->      <xsl:copy-of select="$content"/>    </xsl:when>    <xsl:when test="$position = 'none'">      <xsl:copy-of select="$content"/>    </xsl:when>    <xsl:when test="$position = 'before'">      <fo:float float="before">        <xsl:copy-of select="$content"/>      </fo:float>    </xsl:when>    <xsl:when test="$position = 'left' or                    $position = 'start' or                    $position = 'right' or                    $position = 'end' or                    $position = 'inside' or                    $position = 'outside'">      <xsl:variable name="float">        <fo:float float="{$position}"                  clear="{$clear}">          <fo:block-container                     start-indent="{$start.indent}"                    end-indent="{$end.indent}">            <xsl:if test="$width != ''">              <xsl:attribute name="inline-progression-dimension">                <xsl:value-of select="$width"/>              </xsl:attribute>            </xsl:if>            <fo:block>              <xsl:copy-of select="$content"/>            </fo:block>          </fo:block-container>        </fo:float>      </xsl:variable>      <xsl:choose>        <xsl:when test="$axf.extensions != 0 and self::sidebar">          <fo:block xsl:use-attribute-sets="normal.para.spacing"                    space-after="0pt"                    space-after.precedence="force"                    start-indent="0pt" end-indent="0pt">            <xsl:copy-of select="$float"/>          </fo:block>        </xsl:when>        <xsl:when test="$axf.extensions != 0 and                         ($position = 'left' or $position = 'start')">          <fo:float float="{$position}"                    clear="{$clear}">            <fo:block-container                       inline-progression-dimension=".001mm"                      end-indent="{$start.indent} + {$width} + {$end.indent}">              <xsl:attribute name="start-indent">                <xsl:choose>                  <xsl:when test="ancestor::para">                    <!-- Special case for handling inline floats                         in Antenna House-->                    <xsl:value-of select="concat('-', $body.start.indent)"/>                  </xsl:when>                  <xsl:otherwise>0pt</xsl:otherwise>                </xsl:choose>              </xsl:attribute>              <fo:block start-indent="{$start.indent}"                        end-indent="-{$start.indent} - {$width}">                <xsl:copy-of select="$content"/>              </fo:block>            </fo:block-container>          </fo:float>        </xsl:when>        <xsl:when test="$axf.extensions != 0 and                         ($position = 'right' or $position = 'end')">          <!-- Special case for handling inline floats in Antenna House-->          <fo:float float="{$position}"                    clear="{$clear}">            <fo:block-container                       inline-progression-dimension=".001mm"                      end-indent="-{$body.end.indent}"                      start-indent="{$start.indent} + {$width} + {$end.indent}">              <fo:block end-indent="{$end.indent}"                        start-indent="-{$end.indent} - {$width}">                <xsl:copy-of select="$content"/>              </fo:block>            </fo:block-container>          </fo:float>        </xsl:when>        <xsl:when test="$xep.extensions != 0 and self::sidebar">          <!-- float needs some space above  to line up with following para -->          <fo:block xsl:use-attribute-sets="normal.para.spacing">            <xsl:copy-of select="$float"/>          </fo:block>        </xsl:when>        <xsl:when test="$xep.extensions != 0">          <xsl:copy-of select="$float"/>        </xsl:when>        <xsl:otherwise>          <xsl:copy-of select="$float"/>        </xsl:otherwise>      </xsl:choose>    </xsl:when>    <xsl:otherwise>      <xsl:copy-of select="$content"/>    </xsl:otherwise>  </xsl:choose></xsl:template><xsl:template match="sidebar" name="sidebar">  <!-- Also does margin notes -->  <xsl:variable name="pi-type">    <xsl:call-template name="dbfo-attribute">      <xsl:with-param name="pis"                      select="processing-instruction('dbfo')"/>      <xsl:with-param name="attribute" select="'float-type'"/>    </xsl:call-template>  </xsl:variable>  <xsl:variable name="id">    <xsl:call-template name="object.id"/>  </xsl:variable>  <xsl:choose>    <xsl:when test="$pi-type = 'margin.note'">      <xsl:call-template name="margin.note"/>    </xsl:when>    <xsl:otherwise>      <xsl:variable name="content">        <fo:block xsl:use-attribute-sets="sidebar.properties"                  id="{$id}">          <xsl:call-template name="sidebar.titlepage"/>          <xsl:apply-templates select="node()[not(self::title) and                                         not(self::info) and                                         not(self::sidebarinfo)]"/>        </fo:block>      </xsl:variable>          <xsl:variable name="pi-width">        <xsl:call-template name="dbfo-attribute">          <xsl:with-param name="pis"                          select="processing-instruction('dbfo')"/>          <xsl:with-param name="attribute" select="'sidebar-width'"/>        </xsl:call-template>      </xsl:variable>      <xsl:variable name="position">        <xsl:choose>          <xsl:when test="$pi-type != ''">            <xsl:value-of select="$pi-type"/>          </xsl:when>          <xsl:otherwise>            <xsl:value-of select="$sidebar.float.type"/>          </xsl:otherwise>        </xsl:choose>      </xsl:variable>          <xsl:call-template name="floater">        <xsl:with-param name="content" select="$content"/>        <xsl:with-param name="position" select="$position"/>        <xsl:with-param name="width">          <xsl:choose>            <xsl:when test="$pi-width != ''">              <xsl:value-of select="$pi-width"/>            </xsl:when>            <xsl:otherwise>              <xsl:value-of select="$sidebar.float.width"/>            </xsl:otherwise>          </xsl:choose>        </xsl:with-param>        <xsl:with-param name="start.indent">          <xsl:choose>            <xsl:when test="$position = 'start' or                             $position = 'left'">0pt</xsl:when>            <xsl:when test="$position = 'end' or                             $position = 'right'">0.5em</xsl:when>            <xsl:otherwise>0pt</xsl:otherwise>          </xsl:choose>        </xsl:with-param>        <xsl:with-param name="end.indent">          <xsl:choose>            <xsl:when test="$position = 'start' or                             $position = 'left'">0.5em</xsl:when>            <xsl:when test="$position = 'end' or                             $position = 'right'">0pt</xsl:when>            <xsl:otherwise>0pt</xsl:otherwise>          </xsl:choose>        </xsl:with-param>      </xsl:call-template>    </xsl:otherwise>  </xsl:choose></xsl:template><xsl:template match="sidebar/title|sidebarinfo|sidebar/info"/><xsl:template match="sidebar/title|sidebarinfo/title|sidebar/info/title"              mode="titlepage.mode" priority="1">  <fo:block xsl:use-attribute-sets="sidebar.title.properties">    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template name="margin.note">  <xsl:param name="content">    <fo:block xsl:use-attribute-sets="margin.note.properties">      <xsl:if test="./title">        <fo:block xsl:use-attribute-sets="margin.note.title.properties">          <xsl:apply-templates select="./title" mode="margin.note.title.mode"/>        </fo:block>      </xsl:if>      <xsl:apply-templates/>    </fo:block>  </xsl:param>  <xsl:variable name="pi-width">    <xsl:call-template name="dbfo-attribute">      <xsl:with-param name="pis"                      select="processing-instruction('dbfo')"/>      <xsl:with-param name="attribute" select="'sidebar-width'"/>    </xsl:call-template>  </xsl:variable>  <xsl:variable name="position" select="$margin.note.float.type"/>  <xsl:call-template name="floater">    <xsl:with-param name="content" select="$content"/>    <xsl:with-param name="position" select="$position"/>    <xsl:with-param name="width" >      <xsl:choose>        <xsl:when test="$pi-width != ''">          <xsl:value-of select="$pi-width"/>        </xsl:when>        <xsl:otherwise>          <xsl:value-of select="$margin.note.width"/>        </xsl:otherwise>      </xsl:choose>    </xsl:with-param>    <xsl:with-param name="start.indent">      <xsl:choose>        <xsl:when test="$position = 'start' or                         $position = 'left'">0pt</xsl:when>        <xsl:when test="$position = 'end' or                         $position = 'right'">0.5em</xsl:when>        <xsl:otherwise>0pt</xsl:otherwise>      </xsl:choose>    </xsl:with-param>    <xsl:with-param name="end.indent">      <xsl:choose>        <xsl:when test="$position = 'start' or                         $position = 'left'">0.5em</xsl:when>        <xsl:when test="$position = 'end' or                         $position = 'right'">0pt</xsl:when>        <xsl:otherwise>0pt</xsl:otherwise>      </xsl:choose>    </xsl:with-param>  </xsl:call-template></xsl:template><xsl:template match="sidebar/title" mode="margin.note.title.mode">  <xsl:apply-templates/></xsl:template><!-- ==================================================================== --><xsl:template match="abstract">  <fo:block xsl:use-attribute-sets="abstract.properties">    <xsl:call-template name="anchor"/>    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="abstract/title|abstract/info/title">  <fo:block xsl:use-attribute-sets="abstract.title.properties">    <xsl:apply-templates/>  </fo:block></xsl:template><!-- ==================================================================== --><xsl:template match="msgset">  <xsl:apply-templates/></xsl:template><xsl:template match="msgentry">  <xsl:call-template name="block.object"/></xsl:template><xsl:template match="simplemsgentry">  <xsl:call-template name="block.object"/></xsl:template><xsl:template match="msg">  <xsl:call-template name="block.object"/></xsl:template><xsl:template match="msgmain">  <xsl:apply-templates/></xsl:template><xsl:template match="msgsub">  <xsl:apply-templates/></xsl:template><xsl:template match="msgrel">  <xsl:apply-templates/></xsl:template><xsl:template match="msgtext">  <xsl:apply-templates/></xsl:template><xsl:template match="msginfo">  <xsl:call-template name="block.object"/></xsl:template><xsl:template match="msglevel">  <fo:block>    <fo:inline font-weight="bold"               keep-with-next.within-line="always">      <xsl:call-template name="gentext.template">        <xsl:with-param name="context" select="'msgset'"/>        <xsl:with-param name="name" select="'MsgLevel'"/>      </xsl:call-template>    </fo:inline>    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="msgorig">  <fo:block>    <fo:inline font-weight="bold"               keep-with-next.within-line="always">      <xsl:call-template name="gentext.template">        <xsl:with-param name="context" select="'msgset'"/>        <xsl:with-param name="name" select="'MsgOrig'"/>      </xsl:call-template>    </fo:inline>    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="msgaud">  <fo:block>    <fo:inline font-weight="bold"               keep-with-next.within-line="always">      <xsl:call-template name="gentext.template">        <xsl:with-param name="context" select="'msgset'"/>        <xsl:with-param name="name" select="'MsgAud'"/>      </xsl:call-template>    </fo:inline>    <xsl:apply-templates/>  </fo:block></xsl:template><xsl:template match="msgexplan">  <xsl:call-template name="block.object"/></xsl:template><xsl:template match="msgexplan/title">  <fo:block font-weight="bold"            keep-with-next.within-column="always"            hyphenate="false">    <xsl:apply-templates/>  </fo:block></xsl:template><!-- ==================================================================== --><!-- For better or worse, revhistory is allowed in content... --><xsl:template match="revhistory">  <fo:table table-layout="fixed" xsl:use-attribute-sets="revhistory.table.properties">    <xsl:call-template name="anchor"/>    <fo:table-column column-number="1" column-width="proportional-column-width(1)"/>    <fo:table-column column-number="2" column-width="proportional-column-width(1)"/>    <fo:table-column column-number="3" column-width="proportional-column-width(1)"/>    <fo:table-body start-indent="0pt" end-indent="0pt">      <fo:table-row>        <fo:table-cell number-columns-spanned="3" xsl:use-attribute-sets="revhistory.table.cell.properties">          <fo:block xsl:use-attribute-sets="revhistory.title.properties">            <xsl:call-template name="gentext">              <xsl:with-param name="key" select="'RevHistory'"/>            </xsl:call-template>          </fo:block>        </fo:table-cell>      </fo:table-row>      <xsl:apply-templates/>    </fo:table-body>  </fo:table></xsl:template><xsl:template match="revhistory/revision">  <xsl:variable name="revnumber" select="revnumber"/>  <xsl:variable name="revdate"   select="date"/>  <xsl:variable name="revauthor" select="authorinitials|author"/>  <xsl:variable name="revremark" select="revremark|revdescription"/>  <fo:table-row>    <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties">      <fo:block>        <xsl:call-template name="anchor"/>        <xsl:if test="$revnumber">          <xsl:call-template name="gentext">            <xsl:with-param name="key" select="'Revision'"/>          </xsl:call-template>          <xsl:call-template name="gentext.space"/>          <xsl:apply-templates select="$revnumber[1]"/>        </xsl:if>      </fo:block>    </fo:table-cell>    <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties">      <fo:block>        <xsl:apply-templates select="$revdate[1]"/>      </fo:block>    </fo:table-cell>    <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties">      <fo:block>        <xsl:for-each select="$revauthor">          <xsl:apply-templates select="."/>          <xsl:if test="position() != last()">            <xsl:text>, </xsl:text>          </xsl:if>        </xsl:for-each>      </fo:block>    </fo:table-cell>  </fo:table-row>  <xsl:if test="$revremark">    <fo:table-row>      <fo:table-cell number-columns-spanned="3" xsl:use-attribute-sets="revhistory.table.cell.properties">        <fo:block>          <xsl:apply-templates select="$revremark[1]"/>        </fo:block>      </fo:table-cell>    </fo:table-row>  </xsl:if></xsl:template><xsl:template match="revision/revnumber">  <xsl:apply-templates/></xsl:template><xsl:template match="revision/date">  <xsl:apply-templates/></xsl:template><xsl:template match="revision/authorinitials">  <xsl:apply-templates/></xsl:template><xsl:template match="revision/author">  <xsl:apply-templates/></xsl:template><xsl:template match="revision/revremark">  <xsl:apply-templates/></xsl:template><xsl:template match="revision/revdescription">  <xsl:apply-templates/></xsl:template><!-- ==================================================================== --><xsl:template match="ackno">  <fo:block xsl:use-attribute-sets="normal.para.spacing">    <xsl:call-template name="anchor"/>    <xsl:apply-templates/>  </fo:block></xsl:template><!-- ==================================================================== --><xsl:template match="highlights">  <xsl:call-template name="block.object"/></xsl:template><!-- ==================================================================== --></xsl:stylesheet>
 |