| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 | <?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://docbook.sf.net/release/xsl/current/ for     copyright and other information.     ******************************************************************** --><!-- ==================================================================== --><xsl:attribute-set name="th.style">  <xsl:attribute name="font-weight">bold</xsl:attribute></xsl:attribute-set><!-- Outputs an fo:table only, not the caption --><xsl:template match="table|informaltable" mode="htmlTable">  <xsl:variable name="numcols">    <xsl:call-template name="widest-html-row">      <xsl:with-param name="rows" select=".//tr"/>    </xsl:call-template>  </xsl:variable>  <xsl:variable name="prop-columns"                select=".//col[contains(@width, '%')] |                        .//colgroup[contains(@width, '%')]"/>  <xsl:variable name="table.width">    <xsl:call-template name="table.width"/>  </xsl:variable>  <fo:table xsl:use-attribute-sets="table.table.properties">    <xsl:choose>      <xsl:when test="$fop.extensions != 0 or                      $passivetex.extensions != 0">        <xsl:attribute name="table-layout">fixed</xsl:attribute>      </xsl:when>    </xsl:choose>    <xsl:attribute name="width">      <xsl:choose>        <xsl:when test="@width">          <xsl:value-of select="@width"/>        </xsl:when>        <xsl:when test="$table.width">          <xsl:value-of select="$table.width"/>        </xsl:when>        <xsl:otherwise>100%</xsl:otherwise>      </xsl:choose>    </xsl:attribute>    <xsl:call-template name="make-html-table-columns">      <xsl:with-param name="count" select="$numcols"/>    </xsl:call-template>    <xsl:apply-templates select="thead" mode="htmlTable"/>    <xsl:apply-templates select="tfoot" mode="htmlTable"/>    <xsl:choose>      <xsl:when test="tbody">        <xsl:apply-templates select="tbody" mode="htmlTable"/>      </xsl:when>      <xsl:otherwise>        <fo:table-body start-indent="0pt" end-indent="0pt">          <xsl:apply-templates select="tr" mode="htmlTable"/>        </fo:table-body>      </xsl:otherwise>    </xsl:choose>  </fo:table></xsl:template><xsl:template match="caption" mode="htmlTable">  <!-- Handled by formal.object.heading --></xsl:template><xsl:template name="widest-html-row">  <xsl:param name="rows" select="''"/>  <xsl:param name="count" select="0"/>  <xsl:choose>    <xsl:when test="count($rows) = 0">      <xsl:value-of select="$count"/>    </xsl:when>    <xsl:otherwise>      <xsl:choose>        <xsl:when test="$count > count($rows[1]/*)">          <xsl:call-template name="widest-html-row">            <xsl:with-param name="rows" select="$rows[position() > 1]"/>            <xsl:with-param name="count" select="$count"/>          </xsl:call-template>        </xsl:when>        <xsl:otherwise>          <xsl:call-template name="widest-html-row">            <xsl:with-param name="rows" select="$rows[position() > 1]"/>            <xsl:with-param name="count" select="count($rows[1]/*)"/>          </xsl:call-template>        </xsl:otherwise>      </xsl:choose>    </xsl:otherwise>  </xsl:choose></xsl:template><xsl:template name="make-html-table-columns">  <xsl:param name="count" select="0"/>  <xsl:param name="number" select="1"/>  <xsl:choose>    <xsl:when test="col|colgroup/col">      <xsl:for-each select="col|colgroup/col">        <fo:table-column>          <xsl:attribute name="column-number">            <xsl:number from="table|informaltable" level="any" format="1"/>          </xsl:attribute>          <xsl:if test="@width">            <xsl:attribute name="column-width">              <xsl:choose>                <xsl:when test="$fop.extensions != 0 and                                 contains(@width, '%')">                  <xsl:value-of select="concat('proportional-column-width(',                                               substring-before(@width, '%'),                                               ')')"/>                </xsl:when>                <xsl:otherwise>                  <xsl:value-of select="@width"/>                </xsl:otherwise>              </xsl:choose>            </xsl:attribute>          </xsl:if>        </fo:table-column>      </xsl:for-each>    </xsl:when>    <xsl:when test="$fop.extensions != 0">      <xsl:if test="$number <= $count">        <fo:table-column column-number="{$number}"                         column-width="{6.5 div $count}in"/>        <xsl:call-template name="make-html-table-columns">          <xsl:with-param name="count" select="$count"/>          <xsl:with-param name="number" select="$number + 1"/>        </xsl:call-template>      </xsl:if>    </xsl:when>  </xsl:choose></xsl:template><xsl:template match="tbody" mode="htmlTable">  <fo:table-body border-bottom-width="0.25pt"                 border-bottom-style="solid"                 border-bottom-color="black"                 start-indent="0pt"                 end-indent="0pt">    <xsl:apply-templates mode="htmlTable"/>  </fo:table-body></xsl:template><xsl:template match="td" mode="htmlTable">  <xsl:variable name="bgcolor">    <xsl:call-template name="pi.dbfo_bgcolor"/>  </xsl:variable>  <fo:table-cell xsl:use-attribute-sets="table.cell.padding">    <xsl:call-template name="table.cell.properties">      <xsl:with-param name="bgcolor.pi" select="$bgcolor"/>      <xsl:with-param name="rowsep.inherit" select="0"/>      <xsl:with-param name="colsep.inherit" select="0"/>    </xsl:call-template>    <fo:block>      <xsl:call-template name="table.cell.block.properties"/>      <xsl:apply-templates/>    </fo:block>  </fo:table-cell></xsl:template><xsl:template match="tfoot" mode="htmlTable">  <fo:table-footer start-indent="0pt"                   end-indent="0pt">    <xsl:apply-templates mode="htmlTable"/>  </fo:table-footer></xsl:template><xsl:template match="th" mode="htmlTable">  <xsl:variable name="bgcolor">    <xsl:call-template name="pi.dbfo_bgcolor"/>  </xsl:variable>  <fo:table-cell xsl:use-attribute-sets="th.style table.cell.padding">    <xsl:call-template name="table.cell.properties">      <xsl:with-param name="bgcolor.pi" select="$bgcolor"/>      <xsl:with-param name="rowsep.inherit" select="0"/>      <xsl:with-param name="colsep.inherit" select="0"/>    </xsl:call-template>    <fo:block>      <xsl:call-template name="table.cell.block.properties"/>      <xsl:apply-templates/>    </fo:block>  </fo:table-cell></xsl:template><xsl:template match="thead" mode="htmlTable">  <fo:table-header border-bottom-width="0.25pt"                   border-bottom-style="solid"                   border-bottom-color="black"                   start-indent="0pt"                   end-indent="0pt"                   font-weight="bold">    <xsl:apply-templates mode="htmlTable"/>  </fo:table-header></xsl:template><xsl:template match="tr" mode="htmlTable">  <fo:table-row>    <xsl:call-template name="table.row.properties"/>    <xsl:apply-templates mode="htmlTable"/>  </fo:table-row></xsl:template></xsl:stylesheet>
 |