| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 | <?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.     ******************************************************************** --><xsl:template match="processing-instruction()"></xsl:template><!-- ==================================================================== --><xsl:template name="dbfo-attribute">  <xsl:param name="pis" select="processing-instruction('dbfo')"/>  <xsl:param name="attribute">filename</xsl:param>  <xsl:call-template name="pi-attribute">    <xsl:with-param name="pis" select="$pis"/>    <xsl:with-param name="attribute" select="$attribute"/>  </xsl:call-template></xsl:template><xsl:template name="dbfo-filename">  <xsl:param name="pis" select="./processing-instruction('dbfo')"/>  <xsl:call-template name="dbfo-attribute">    <xsl:with-param name="pis" select="$pis"/>    <xsl:with-param name="attribute">filename</xsl:with-param>  </xsl:call-template></xsl:template><xsl:template name="dbfo-dir">  <xsl:param name="pis" select="./processing-instruction('dbfo')"/>  <xsl:call-template name="dbfo-attribute">    <xsl:with-param name="pis" select="$pis"/>    <xsl:with-param name="attribute">dir</xsl:with-param>  </xsl:call-template></xsl:template><!-- ==================================================================== --><xsl:template name="process.cmdsynopsis.list">  <xsl:param name="cmdsynopses"/><!-- empty node list by default -->  <xsl:param name="count" select="1"/>  <xsl:choose>    <xsl:when test="$count>count($cmdsynopses)"></xsl:when>    <xsl:otherwise>      <xsl:variable name="cmdsyn" select="$cmdsynopses[$count]"/>       <dt>       <a>         <xsl:attribute name="href">           <xsl:call-template name="object.id">             <xsl:with-param name="object" select="$cmdsyn"/>           </xsl:call-template>         </xsl:attribute>         <xsl:choose>           <xsl:when test="$cmdsyn/@xreflabel">             <xsl:call-template name="xref.xreflabel">               <xsl:with-param name="target" select="$cmdsyn"/>             </xsl:call-template>           </xsl:when>           <xsl:otherwise>             <xsl:apply-templates select="$cmdsyn" mode="xref-to">               <xsl:with-param name="target" select="$cmdsyn"/>             </xsl:apply-templates>           </xsl:otherwise>         </xsl:choose>       </a>       </dt>        <xsl:call-template name="process.cmdsynopsis.list">          <xsl:with-param name="cmdsynopses" select="$cmdsynopses"/>          <xsl:with-param name="count" select="$count+1"/>        </xsl:call-template>      </xsl:otherwise>    </xsl:choose></xsl:template><xsl:template match="processing-instruction('dbcmdlist')">  <xsl:variable name="cmdsynopses" select="..//cmdsynopsis"/>  <xsl:if test="count($cmdsynopses)<1">    <xsl:message><xsl:text>No cmdsynopsis elements matched dbcmdlist PI, perhaps it's nested too deep?</xsl:text>    </xsl:message>  </xsl:if>  <dl>    <xsl:call-template name="process.cmdsynopsis.list">      <xsl:with-param name="cmdsynopses" select="$cmdsynopses"/>    </xsl:call-template>  </dl></xsl:template><!-- ==================================================================== --><xsl:template name="process.funcsynopsis.list">  <xsl:param name="funcsynopses"/><!-- empty node list by default -->  <xsl:param name="count" select="1"/>  <xsl:choose>    <xsl:when test="$count>count($funcsynopses)"></xsl:when>    <xsl:otherwise>      <xsl:variable name="cmdsyn" select="$funcsynopses[$count]"/>       <dt>       <a>         <xsl:attribute name="href">           <xsl:call-template name="object.id">             <xsl:with-param name="object" select="$cmdsyn"/>           </xsl:call-template>         </xsl:attribute>         <xsl:choose>           <xsl:when test="$cmdsyn/@xreflabel">             <xsl:call-template name="xref.xreflabel">               <xsl:with-param name="target" select="$cmdsyn"/>             </xsl:call-template>           </xsl:when>           <xsl:otherwise>              <xsl:apply-templates select="$cmdsyn" mode="xref-to">                <xsl:with-param name="target" select="$cmdsyn"/>              </xsl:apply-templates>           </xsl:otherwise>         </xsl:choose>       </a>       </dt>        <xsl:call-template name="process.funcsynopsis.list">          <xsl:with-param name="funcsynopses" select="$funcsynopses"/>          <xsl:with-param name="count" select="$count+1"/>        </xsl:call-template>      </xsl:otherwise>    </xsl:choose></xsl:template><xsl:template match="processing-instruction('dbfunclist')">  <xsl:variable name="funcsynopses" select="..//funcsynopsis"/>  <xsl:if test="count($funcsynopses)<1">    <xsl:message><xsl:text>No funcsynopsis elements matched dbfunclist PI, perhaps it's nested too deep?</xsl:text>    </xsl:message>  </xsl:if>  <dl>    <xsl:call-template name="process.funcsynopsis.list">      <xsl:with-param name="funcsynopses" select="$funcsynopses"/>    </xsl:call-template>  </dl></xsl:template><!-- ==================================================================== --><!-- "need" processing instruction, a kind of soft page break --><!-- A "need" is a request for space on a page.  If the requested space     is not available, the page breaks and the content that follows     the need request appears on the next page. If the requested     space is available, then the request is ignored. --><xsl:template match="processing-instruction('dbfo-need')">  <xsl:variable name="pi-height">    <xsl:call-template name="dbfo-attribute">      <xsl:with-param name="pis" select="."/>      <xsl:with-param name="attribute" select="'height'"/>    </xsl:call-template>  </xsl:variable>  <xsl:variable name="height">    <xsl:choose>      <xsl:when test="$pi-height != ''">        <xsl:value-of select="$pi-height"/>      </xsl:when>      <xsl:otherwise>0pt</xsl:otherwise>    </xsl:choose>  </xsl:variable>  <xsl:variable name="pi-before">    <xsl:call-template name="dbfo-attribute">      <xsl:with-param name="pis" select="."/>      <xsl:with-param name="attribute" select="'space-before'"/>    </xsl:call-template>  </xsl:variable>  <xsl:variable name="spacer">    <fo:block-container width="100%" height="{$height}">      <fo:block><fo:leader leader-length="0pt"/></fo:block>    </fo:block-container>  </xsl:variable>  <xsl:choose>    <xsl:when test="$fop.extensions != 0">      <!-- Doesn't work in fop -->    </xsl:when>    <xsl:when test="$pi-before != '' and                    not(following-sibling::listitem) and                    not(following-sibling::step)">      <fo:block space-after="0pt" space-before="{$pi-before}">        <xsl:copy-of select="$spacer"/>      </fo:block>    </xsl:when>    <xsl:when test="following-sibling::para">      <fo:block space-after="0pt"                 xsl:use-attribute-sets="normal.para.spacing">        <xsl:copy-of select="$spacer"/>      </fo:block>    </xsl:when>    <xsl:when test="following-sibling::table or                    following-sibling::figure or                    following-sibling::example or                    following-sibling::equation">      <fo:block space-after="0pt"                 xsl:use-attribute-sets="formal.object.properties">        <xsl:copy-of select="$spacer"/>      </fo:block>    </xsl:when>    <xsl:when test="following-sibling::informaltable or                    following-sibling::informalfigure or                    following-sibling::informalexample or                    following-sibling::informalequation">      <fo:block space-after="0pt"                 xsl:use-attribute-sets="informal.object.properties">        <xsl:copy-of select="$spacer"/>      </fo:block>    </xsl:when>    <xsl:when test="following-sibling::itemizedlist or                    following-sibling::orderedlist or                    following-sibling::variablelist or                    following-sibling::simplelist">      <fo:block space-after="0pt"                 xsl:use-attribute-sets="informal.object.properties">        <xsl:copy-of select="$spacer"/>      </fo:block>    </xsl:when>    <xsl:when test="following-sibling::listitem or                    following-sibling::step">      <fo:list-item space-after="0pt"                 xsl:use-attribute-sets="informal.object.properties">        <fo:list-item-label/>        <fo:list-item-body start-indent="0pt" end-indent="0pt">          <xsl:copy-of select="$spacer"/>        </fo:list-item-body>      </fo:list-item>    </xsl:when>    <xsl:when test="following-sibling::sect1 or                    following-sibling::sect2 or                    following-sibling::sect3 or                    following-sibling::sect4 or                    following-sibling::sect5 or                    following-sibling::section">      <fo:block space-after="0pt"                 xsl:use-attribute-sets="section.title.properties">        <xsl:copy-of select="$spacer"/>      </fo:block>    </xsl:when>    <xsl:otherwise>      <fo:block space-after="0pt" space-before="0em">        <xsl:copy-of select="$spacer"/>      </fo:block>    </xsl:otherwise>  </xsl:choose>  <xsl:choose>    <xsl:when test="$fop.extensions != 0">      <!-- Doesn't work in fop -->    </xsl:when>    <xsl:when test="following-sibling::listitem or                    following-sibling::step">      <fo:list-item space-before.precedence="force"                space-before="-{$height}"                space-after="0pt"                space-after.precedence="force">        <fo:list-item-label/>        <fo:list-item-body start-indent="0pt" end-indent="0pt"/>      </fo:list-item>    </xsl:when>    <xsl:otherwise>      <fo:block space-before.precedence="force"                space-before="-{$height}"                space-after="0pt"                space-after.precedence="force">      </fo:block>    </xsl:otherwise>  </xsl:choose></xsl:template><!-- ==================================================================== --></xsl:stylesheet>
 |