Blame xslt/backend/man-table.xsl

Packit e4b6da
Packit e4b6da
Packit e4b6da
                xmlns:exsl="http://exslt.org/common"
Packit e4b6da
                xmlns:m="http://docbook2x.sourceforge.net/xmlns/Man-XML"
Packit e4b6da
                exclude-result-prefixes="exsl"
Packit e4b6da
                version='1.0'>
Packit e4b6da
Packit e4b6da
  
Packit e4b6da
       $Id: man-table.xsl,v 1.2 2006/04/22 19:47:18 stevecheng Exp $
Packit e4b6da
       ********************************************************************
Packit e4b6da
Packit e4b6da
       This file came from manpages/table.xsl in
Packit e4b6da
       the XSL DocBook Stylesheet distribution.
Packit e4b6da
Packit e4b6da
       See ../../COPYING for the original copyright information.
Packit e4b6da
Packit e4b6da
       This stylesheet converts DocBook tables to tbl markup.
Packit e4b6da
       The conversion is done in a somewhat roundabout way by 
Packit e4b6da
       going through HTML tables first.
Packit e4b6da
Packit e4b6da
       ******************************************************************** -->
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  <xsl:include href="man-common-table.xsl" />
Packit e4b6da
  <xsl:include href="man-html-table.xsl" />
Packit e4b6da
Packit e4b6da
  
Packit e4b6da
  <xsl:template name="dbhtml-attribute">
Packit e4b6da
    <xsl:param name="pis" />
Packit e4b6da
    <xsl:param name="attribute" />
Packit e4b6da
  </xsl:template>
Packit e4b6da
Packit e4b6da
  
Packit e4b6da
  <xsl:param name="html.cellspacing" select="''" />
Packit e4b6da
  <xsl:param name="html.cellpadding" select="''" />
Packit e4b6da
  <xsl:param name="table.borders.with.css" select="0" />
Packit e4b6da
  <xsl:param name="default.table.width" select="''"/>
Packit e4b6da
  <xsl:param name="use.extensions" select="0" />
Packit e4b6da
  <xsl:param name="entry.propagates.style" select="1" />
Packit e4b6da
  <xsl:param name="show.revisionflag" select="0" />
Packit e4b6da
Packit e4b6da
  
Packit e4b6da
  <xsl:template name="anchor" />
Packit e4b6da
Packit e4b6da
  
Packit e4b6da
<xsl:template name="copy-string">
Packit e4b6da
  
Packit e4b6da
  <xsl:param name="string"/>
Packit e4b6da
  <xsl:param name="count" select="0"/>
Packit e4b6da
  <xsl:param name="result"/>
Packit e4b6da
Packit e4b6da
  <xsl:choose>
Packit e4b6da
    <xsl:when test="$count>0">
Packit e4b6da
      <xsl:call-template name="copy-string">
Packit e4b6da
        <xsl:with-param name="string" select="$string"/>
Packit e4b6da
        <xsl:with-param name="count" select="$count - 1"/>
Packit e4b6da
        <xsl:with-param name="result">
Packit e4b6da
          <xsl:value-of select="$result"/>
Packit e4b6da
          <xsl:value-of select="$string"/>
Packit e4b6da
        </xsl:with-param>
Packit e4b6da
      </xsl:call-template>
Packit e4b6da
    </xsl:when>
Packit e4b6da
    <xsl:otherwise>
Packit e4b6da
      <xsl:value-of select="$result"/>
Packit e4b6da
    </xsl:otherwise>
Packit e4b6da
  </xsl:choose>
Packit e4b6da
</xsl:template>
Packit e4b6da
  <xsl:template name="trim.text">
Packit e4b6da
    <xsl:param name="contents" select="."/>
Packit e4b6da
    <xsl:variable name="contents-left-trimmed">
Packit e4b6da
      <xsl:call-template name="trim-left">
Packit e4b6da
        <xsl:with-param name="contents" select="$contents"/>
Packit e4b6da
      </xsl:call-template>
Packit e4b6da
    </xsl:variable>
Packit e4b6da
    <xsl:variable name="contents-trimmed">
Packit e4b6da
      <xsl:call-template name="trim-right">
Packit e4b6da
        <xsl:with-param name="contents" select="$contents-left-trimmed"/>
Packit e4b6da
      </xsl:call-template>
Packit e4b6da
    </xsl:variable>
Packit e4b6da
    <xsl:value-of select="$contents-trimmed"/>
Packit e4b6da
  </xsl:template>
Packit e4b6da
  <xsl:template name="trim-left">
Packit e4b6da
    <xsl:param name="contents"/>
Packit e4b6da
    <xsl:choose>
Packit e4b6da
      <xsl:when test="starts-with($contents,'
') or                       starts-with($contents,'
') or                       starts-with($contents,' ') or                       starts-with($contents,'	')">
Packit e4b6da
        <xsl:call-template name="trim-left">
Packit e4b6da
          <xsl:with-param name="contents" select="substring($contents, 2)"/>
Packit e4b6da
        </xsl:call-template>
Packit e4b6da
      </xsl:when>
Packit e4b6da
      <xsl:otherwise>
Packit e4b6da
        <xsl:value-of select="$contents"/>
Packit e4b6da
      </xsl:otherwise>
Packit e4b6da
    </xsl:choose>
Packit e4b6da
  </xsl:template>
Packit e4b6da
  <xsl:template name="trim-right">
Packit e4b6da
    <xsl:param name="contents"/>
Packit e4b6da
    <xsl:variable name="last-char">
Packit e4b6da
      <xsl:value-of select="substring($contents, string-length($contents), 1)"/>
Packit e4b6da
    </xsl:variable>
Packit e4b6da
    <xsl:choose>
Packit e4b6da
      <xsl:when test="($last-char = '
') or                       ($last-char = '
') or                       ($last-char = ' ') or                       ($last-char = '	')">
Packit e4b6da
        <xsl:call-template name="trim-right">
Packit e4b6da
          <xsl:with-param name="contents" select="substring($contents, 1, string-length($contents) - 1)"/>
Packit e4b6da
        </xsl:call-template>
Packit e4b6da
      </xsl:when>
Packit e4b6da
      <xsl:otherwise>
Packit e4b6da
        <xsl:value-of select="$contents"/>
Packit e4b6da
      </xsl:otherwise>
Packit e4b6da
    </xsl:choose>
Packit e4b6da
  </xsl:template>
Packit e4b6da
Packit e4b6da
Packit e4b6da
Packit e4b6da
Packit e4b6da
  
Packit e4b6da
  <xsl:template match="m:table">
Packit e4b6da
    <xsl:call-template name="block-break" />
Packit e4b6da
    <xsl:apply-templates select="." mode="to.tbl" />
Packit e4b6da
  </xsl:template>
Packit e4b6da
Packit e4b6da
  <xsl:param name="tbl.running.header.from.thead" select="0"/>
Packit e4b6da
  <xsl:param name="tbl.column.separator.char">:</xsl:param>
Packit e4b6da
  <xsl:param name="tbl.title.font">B</xsl:param>
Packit e4b6da
  <xsl:param name="tbl.headings.font">B</xsl:param>
Packit e4b6da
Packit e4b6da
  
Packit e4b6da
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
Packit e4b6da
  
Packit e4b6da
  <xsl:template match="m:table" mode="to.tbl">
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    <xsl:param name="source"/>
Packit e4b6da
Packit e4b6da
    
Packit e4b6da
    <xsl:param name="title" />
Packit e4b6da
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    <xsl:param name="allbox">
Packit e4b6da
    <xsl:if test="not(@frame = 'none') and not(@border = '0')">
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      <xsl:text>allbox </xsl:text>
Packit e4b6da
    </xsl:if>
Packit e4b6da
    </xsl:param>
Packit e4b6da
    <xsl:param name="center">
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    <xsl:if test="@align = 'center' or m:tgroup/@align = 'center'">
Packit e4b6da
      <xsl:text>center </xsl:text>
Packit e4b6da
    </xsl:if>
Packit e4b6da
    </xsl:param>
Packit e4b6da
    <xsl:param name="expand">
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    <xsl:if test="@pgwide = '1' or @width = '100%'">
Packit e4b6da
      <xsl:text>expand </xsl:text>
Packit e4b6da
    </xsl:if>
Packit e4b6da
    </xsl:param>
Packit e4b6da
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    <xsl:param name="html-table-output">
Packit e4b6da
      <xsl:choose>
Packit e4b6da
        <xsl:when test=".//tr">
Packit e4b6da
          
Packit e4b6da
          
Packit e4b6da
          
Packit e4b6da
          
Packit e4b6da
          <xsl:for-each select="descendant-or-self::table|descendant-or-self::informaltable">
Packit e4b6da
            <xsl:element name="{local-name(..)}">
Packit e4b6da
              
Packit e4b6da
                <xsl:copy-of select="*"/>
Packit e4b6da
              
Packit e4b6da
            </xsl:element>
Packit e4b6da
          </xsl:for-each>
Packit e4b6da
        </xsl:when>
Packit e4b6da
        <xsl:otherwise>
Packit e4b6da
          
Packit e4b6da
          
Packit e4b6da
          
Packit e4b6da
          
Packit e4b6da
          <xsl:apply-templates/>
Packit e4b6da
        </xsl:otherwise>
Packit e4b6da
      </xsl:choose>
Packit e4b6da
    </xsl:param>
Packit e4b6da
    <xsl:param name="contents" select="exsl:node-set($html-table-output)"/>
Packit e4b6da
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
         * templates (further below) to generate the actual tbl(1) markup, -->
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
Packit e4b6da
    <xsl:for-each select="$contents//table">
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      <xsl:if test="$title != '' or parent::td">
Packit e4b6da
        <xsl:text>.PP
</xsl:text>
Packit e4b6da
        <xsl:text>.</xsl:text>
Packit e4b6da
        <xsl:value-of select="$tbl.title.font"/>
Packit e4b6da
        <xsl:text> </xsl:text>
Packit e4b6da
        <xsl:if test="parent::td">
Packit e4b6da
          <xsl:text>*[nested table]</xsl:text>
Packit e4b6da
        </xsl:if>
Packit e4b6da
        <xsl:value-of select="normalize-space($title)"/>
Packit e4b6da
        <xsl:text>
</xsl:text>
Packit e4b6da
        <xsl:text>.sp -1n
</xsl:text>
Packit e4b6da
      </xsl:if>
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      <xsl:text>.TS</xsl:text>
Packit e4b6da
      <xsl:if test="thead and $tbl.running.header.from.thead">
Packit e4b6da
        
Packit e4b6da
        <xsl:text> H</xsl:text>
Packit e4b6da
      </xsl:if>
Packit e4b6da
      <xsl:text>
</xsl:text>
Packit e4b6da
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      <xsl:variable name="options-line">
Packit e4b6da
        <xsl:value-of select="$allbox"/>
Packit e4b6da
        <xsl:value-of select="$center"/>
Packit e4b6da
        <xsl:value-of select="$expand"/>
Packit e4b6da
        <xsl:text>tab(</xsl:text>
Packit e4b6da
        <xsl:value-of select="$tbl.column.separator.char"/>
Packit e4b6da
        <xsl:text>)</xsl:text>
Packit e4b6da
      </xsl:variable>
Packit e4b6da
      <xsl:if test="normalize-space($options-line) != ''">
Packit e4b6da
        <xsl:value-of select="normalize-space($options-line)"/>
Packit e4b6da
        <xsl:text>;
</xsl:text>
Packit e4b6da
      </xsl:if>
Packit e4b6da
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      <xsl:if test="thead">
Packit e4b6da
        <xsl:call-template name="output.rows">
Packit e4b6da
          <xsl:with-param name="rows" select="thead/tr"/>
Packit e4b6da
        </xsl:call-template> 
Packit e4b6da
        <xsl:text>
</xsl:text>
Packit e4b6da
Packit e4b6da
        
Packit e4b6da
        <xsl:choose>
Packit e4b6da
          <xsl:when test="$tbl.running.header.from.thead">
Packit e4b6da
            
Packit e4b6da
            <xsl:text>.TH
</xsl:text>
Packit e4b6da
          </xsl:when>
Packit e4b6da
          <xsl:otherwise>
Packit e4b6da
            
Packit e4b6da
            
Packit e4b6da
            
Packit e4b6da
            
Packit e4b6da
            
Packit e4b6da
            
Packit e4b6da
            
Packit e4b6da
            
Packit e4b6da
            <xsl:text>.T&
</xsl:text>
Packit e4b6da
          </xsl:otherwise>
Packit e4b6da
        </xsl:choose>
Packit e4b6da
      </xsl:if>
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      <xsl:variable name="rows-set">
Packit e4b6da
        <xsl:copy-of select="tbody/tr|tr"/>
Packit e4b6da
        <xsl:copy-of select="tfoot/tr"/>
Packit e4b6da
      </xsl:variable>
Packit e4b6da
      <xsl:call-template name="output.rows">
Packit e4b6da
        <xsl:with-param name="source" select="$source"/>
Packit e4b6da
        <xsl:with-param name="rows" select="exsl:node-set($rows-set)"/>
Packit e4b6da
      </xsl:call-template>
Packit e4b6da
Packit e4b6da
      
Packit e4b6da
      <xsl:text>
</xsl:text>
Packit e4b6da
      
Packit e4b6da
      <xsl:text>.TE
</xsl:text>
Packit e4b6da
      
Packit e4b6da
      <xsl:text>.sp
</xsl:text>
Packit e4b6da
    </xsl:for-each>
Packit e4b6da
  </xsl:template>
Packit e4b6da
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  <xsl:template name="output.rows">
Packit e4b6da
    <xsl:param name="source"/>
Packit e4b6da
    <xsl:param name="rows"/>
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    <xsl:variable name="cells-list">
Packit e4b6da
      <xsl:call-template name="build.cell.list">
Packit e4b6da
        <xsl:with-param name="source" select="$source"/>
Packit e4b6da
        <xsl:with-param name="rows" select="$rows"/>
Packit e4b6da
      </xsl:call-template>
Packit e4b6da
    </xsl:variable>
Packit e4b6da
    <xsl:variable name="cells" select="exsl:node-set($cells-list)"/>
Packit e4b6da
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    <xsl:call-template name="create.table.format">
Packit e4b6da
      <xsl:with-param name="cells" select="$cells"/>
Packit e4b6da
    </xsl:call-template>
Packit e4b6da
Packit e4b6da
    
Packit e4b6da
    <xsl:for-each select="$cells/cell">
Packit e4b6da
      <xsl:call-template name="output.cell"/>
Packit e4b6da
    </xsl:for-each>
Packit e4b6da
  </xsl:template>
Packit e4b6da
Packit e4b6da
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  <xsl:template name="output.cell">
Packit e4b6da
    <xsl:choose>
Packit e4b6da
      
Packit e4b6da
                      not(preceding-sibling::cell)">
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        <xsl:text>
</xsl:text>
Packit e4b6da
      </xsl:when>
Packit e4b6da
      <xsl:otherwise>
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        <xsl:value-of select="$tbl.column.separator.char"/>
Packit e4b6da
      </xsl:otherwise>
Packit e4b6da
    </xsl:choose>
Packit e4b6da
    <xsl:choose>
Packit e4b6da
      <xsl:when test="@type = '^'">
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        <xsl:if test="@colspan and @colspan > 1">
Packit e4b6da
          
Packit e4b6da
          
Packit e4b6da
          
Packit e4b6da
          <xsl:call-template name="copy-string">
Packit e4b6da
            <xsl:with-param name="string" select="$tbl.column.separator.char"/>
Packit e4b6da
            <xsl:with-param name="count">
Packit e4b6da
              <xsl:value-of select="@colspan - 1"/>
Packit e4b6da
            </xsl:with-param>
Packit e4b6da
          </xsl:call-template>
Packit e4b6da
        </xsl:if>
Packit e4b6da
      </xsl:when>
Packit e4b6da
      <xsl:otherwise>
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        <xsl:text>T{
</xsl:text>
Packit e4b6da
        <xsl:copy-of select="."/>
Packit e4b6da
        <xsl:text>
T}</xsl:text>
Packit e4b6da
      </xsl:otherwise>
Packit e4b6da
    </xsl:choose>
Packit e4b6da
  </xsl:template>
Packit e4b6da
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  <xsl:template name="build.cell.list">
Packit e4b6da
    <xsl:param name="source"/>
Packit e4b6da
    <xsl:param name="rows"/>
Packit e4b6da
    <xsl:param  name="cell-data-unsorted">
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      <xsl:apply-templates select="$rows" mode="cell.list">
Packit e4b6da
        <xsl:with-param name="source" select="$source"/>
Packit e4b6da
      </xsl:apply-templates>
Packit e4b6da
    </xsl:param>
Packit e4b6da
    <xsl:param  name="cell-data-sorted">
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      <xsl:for-each select="exsl:node-set($cell-data-unsorted)/cell">
Packit e4b6da
        <xsl:sort select="@row"/>
Packit e4b6da
        <xsl:sort select="@slot"/>
Packit e4b6da
        <xsl:copy-of select="."/>
Packit e4b6da
      </xsl:for-each>
Packit e4b6da
    </xsl:param>
Packit e4b6da
    
Packit e4b6da
    <xsl:copy-of select="$cell-data-sorted"/>
Packit e4b6da
  </xsl:template>
Packit e4b6da
Packit e4b6da
  <xsl:template match="tr" mode="cell.list">
Packit e4b6da
    <xsl:param name="source"/>
Packit e4b6da
    <xsl:variable name="row">
Packit e4b6da
      <xsl:value-of select="count(preceding-sibling::tr) + 1"/>
Packit e4b6da
    </xsl:variable>
Packit e4b6da
    <xsl:for-each select="td|th">
Packit e4b6da
      <xsl:call-template name="cell">
Packit e4b6da
        <xsl:with-param name="source" select="$source"/>
Packit e4b6da
        <xsl:with-param name="row" select="$row"/>
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        <xsl:with-param name="class" select="name(.)"/>
Packit e4b6da
      </xsl:call-template>
Packit e4b6da
    </xsl:for-each>
Packit e4b6da
  </xsl:template>
Packit e4b6da
Packit e4b6da
  <xsl:template name="cell">
Packit e4b6da
    <xsl:param name="source"/>
Packit e4b6da
    <xsl:param name="row"/>
Packit e4b6da
    <xsl:param name="class"/>
Packit e4b6da
    <xsl:param name="slot">
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      <xsl:value-of select="position()"/>
Packit e4b6da
    </xsl:param>
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
          row="{$row}"
Packit e4b6da
          slot="{$slot}"
Packit e4b6da
          class="{$class}"
Packit e4b6da
          colspan="{@colspan}"
Packit e4b6da
          align="{@align}"
Packit e4b6da
          valign="{@valign}"
Packit e4b6da
          >
Packit e4b6da
      <xsl:choose>
Packit e4b6da
        <xsl:when test=".//tr">
Packit e4b6da
          <xsl:call-template name="log.message">
Packit e4b6da
            <xsl:with-param name="level">Warn</xsl:with-param>
Packit e4b6da
            <xsl:with-param name="source" select="$source"/>
Packit e4b6da
            <xsl:with-param name="message">
Packit e4b6da
              
Packit e4b6da
              >tbl convert : Extracted a nested table</xsl:text>
Packit e4b6da
            </xsl:with-param>
Packit e4b6da
          </xsl:call-template>
Packit e4b6da
          <xsl:text>[\fInested table\fR]*
</xsl:text>
Packit e4b6da
        </xsl:when>
Packit e4b6da
        <xsl:otherwise>
Packit e4b6da
          
Packit e4b6da
          
Packit e4b6da
          <xsl:variable name="contents">
Packit e4b6da
            <xsl:apply-templates/>
Packit e4b6da
          </xsl:variable>
Packit e4b6da
          
Packit e4b6da
          
Packit e4b6da
          
Packit e4b6da
          <xsl:call-template name="trim.text">
Packit e4b6da
            <xsl:with-param name="contents" select="$contents"/>
Packit e4b6da
          </xsl:call-template>
Packit e4b6da
        </xsl:otherwise>
Packit e4b6da
      </xsl:choose>
Packit e4b6da
    </cell>
Packit e4b6da
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    <xsl:if test="@rowspan and @rowspan > 0">
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      <xsl:variable name="colspan-offset">
Packit e4b6da
        
Packit e4b6da
            select="sum(preceding-sibling::td[@colspan != ''
Packit e4b6da
                    and @colspan > 1]/@colspan) -
Packit e4b6da
                    count(preceding-sibling::td[@colspan != ''
Packit e4b6da
                    and @colspan > 1]/@colspan)"/>
Packit e4b6da
      </xsl:variable>
Packit e4b6da
      <xsl:call-template name="create.dummy.cells">
Packit e4b6da
        <xsl:with-param name="row" select="$row + 1"/>
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        <xsl:with-param name="slot" select="$slot + $colspan-offset"/>
Packit e4b6da
        <xsl:with-param name="colspan" select="@colspan"/>
Packit e4b6da
        <xsl:with-param name="rowspan" select="@rowspan"/>
Packit e4b6da
      </xsl:call-template>
Packit e4b6da
    </xsl:if>
Packit e4b6da
  </xsl:template>
Packit e4b6da
Packit e4b6da
  <xsl:template name="create.dummy.cells">
Packit e4b6da
    <xsl:param name="row"/>
Packit e4b6da
    <xsl:param name="slot"/>
Packit e4b6da
    <xsl:param name="colspan"/>
Packit e4b6da
    <xsl:param name="rowspan"/>
Packit e4b6da
    <xsl:choose>
Packit e4b6da
      <xsl:when test="$rowspan > 1">
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        <cell row="{$row}" slot="{$slot}" type="^" colspan="{@colspan}"/>
Packit e4b6da
        <xsl:call-template name="create.dummy.cells">
Packit e4b6da
          <xsl:with-param name="row" select="$row + 1"/>
Packit e4b6da
          <xsl:with-param name="slot" select="$slot"/>
Packit e4b6da
          <xsl:with-param name="colspan" select="$colspan"/>
Packit e4b6da
          <xsl:with-param name="rowspan" select="$rowspan - 1"/>
Packit e4b6da
        </xsl:call-template>
Packit e4b6da
      </xsl:when>
Packit e4b6da
    </xsl:choose>
Packit e4b6da
  </xsl:template>
Packit e4b6da
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  <xsl:template name="create.table.format">
Packit e4b6da
    <xsl:param name="cells"/>
Packit e4b6da
    <xsl:apply-templates mode="table.format" select="$cells"/>
Packit e4b6da
    
Packit e4b6da
    <xsl:text>.</xsl:text>
Packit e4b6da
  </xsl:template>
Packit e4b6da
Packit e4b6da
  <xsl:template match="cell" mode="table.format">
Packit e4b6da
    <xsl:choose>
Packit e4b6da
      <xsl:when test="preceding-sibling::cell[1]/@row != @row">
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        <xsl:text>
</xsl:text>
Packit e4b6da
      </xsl:when>
Packit e4b6da
      <xsl:otherwise>
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        <xsl:if test="position() != 1">
Packit e4b6da
          <xsl:text> </xsl:text>
Packit e4b6da
        </xsl:if>
Packit e4b6da
      </xsl:otherwise>
Packit e4b6da
    </xsl:choose>
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    <xsl:choose>
Packit e4b6da
      <xsl:when test="@type = '^'">
Packit e4b6da
        <xsl:text>^</xsl:text>
Packit e4b6da
      </xsl:when>
Packit e4b6da
      <xsl:when test="@align = 'center'">
Packit e4b6da
        <xsl:text>c</xsl:text>
Packit e4b6da
      </xsl:when>
Packit e4b6da
      <xsl:when test="@align = 'right'">
Packit e4b6da
        <xsl:text>r</xsl:text>
Packit e4b6da
      </xsl:when>
Packit e4b6da
      <xsl:when test="@align = 'char'">
Packit e4b6da
        <xsl:text>n</xsl:text>
Packit e4b6da
      </xsl:when>
Packit e4b6da
      <xsl:otherwise>
Packit e4b6da
        
Packit e4b6da
        <xsl:text>l</xsl:text>
Packit e4b6da
      </xsl:otherwise>
Packit e4b6da
    </xsl:choose>
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    <xsl:if test="@valign = 'top'">
Packit e4b6da
      <xsl:text>t</xsl:text>
Packit e4b6da
    </xsl:if>
Packit e4b6da
    <xsl:if test="@class = 'th'">
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      <xsl:value-of select="$tbl.headings.font"/>
Packit e4b6da
    </xsl:if>
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    
Packit e4b6da
    <xsl:if test="@colspan > 1">
Packit e4b6da
      <xsl:call-template name="process.colspan">
Packit e4b6da
        <xsl:with-param name="colspan" select="@colspan - 1"/>
Packit e4b6da
        <xsl:with-param name="type" select="@type"/>
Packit e4b6da
      </xsl:call-template>
Packit e4b6da
    </xsl:if>
Packit e4b6da
  </xsl:template>
Packit e4b6da
  
Packit e4b6da
  <xsl:template name="process.colspan">
Packit e4b6da
    <xsl:param name="colspan"/>
Packit e4b6da
    <xsl:param name="type"/>
Packit e4b6da
    
Packit e4b6da
    <xsl:text> </xsl:text>
Packit e4b6da
    <xsl:choose>
Packit e4b6da
      <xsl:when test="$type = '^'">
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        
Packit e4b6da
        <xsl:text>^</xsl:text>
Packit e4b6da
      </xsl:when>
Packit e4b6da
      <xsl:otherwise>
Packit e4b6da
        
Packit e4b6da
        <xsl:text>s</xsl:text>
Packit e4b6da
      </xsl:otherwise>
Packit e4b6da
    </xsl:choose>
Packit e4b6da
    <xsl:if test="$colspan > 1">
Packit e4b6da
      
Packit e4b6da
      
Packit e4b6da
      <xsl:call-template name="process.colspan">
Packit e4b6da
        <xsl:with-param name="colspan" select="$colspan - 1"/>
Packit e4b6da
        <xsl:with-param name="type" select="$type"/>
Packit e4b6da
      </xsl:call-template>
Packit e4b6da
    </xsl:if>
Packit e4b6da
  </xsl:template>
Packit e4b6da
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  
Packit e4b6da
  <xsl:template match="colgroup"/>
Packit e4b6da
  <xsl:template match="col"/>
Packit e4b6da
Packit e4b6da
</xsl:stylesheet>