Great - Thanks Bob.

This all came about when I needed to render a table in PDF that had no borders, 
but had one cell on the bottom of the table that needed a bottom line, but I 
could not render it because the "rowsep" does not work on the bottom cell 
because the outer table line would overwrite it.

Sooo... I decided to try to render that particular table a bit different, hence 
the question. But since I got you on the line, wouldn't it make sense to allow 
a "rowsep" on a cell when the table has a frame="none" ?

Thanks,
Dean Nelson



In a message dated 09/05/09 16:26:20 Pacific Daylight Time, [email protected] 
writes:
Hi Dean,
You could do it with a processing instruction, a tabstyle attribute is more 
appropriate. A tabstyle can be put on a table or informaltable element to 
indicate to the stylesheet that different styling is required.  

If you go with tabstyle, you can call a utility template named 'tabstyle' that  
returns the value of the attribute for the current table.  The tabstyle 
template is described here:

http://www.sagehill.net/docbookxsl/PrintTableStyles.html#TabstyleTemplate

To customize the frame borders, you would copy and edit the template named 
table.frame in fo/table.xsl to use an xsl:choose statement to select the frame 
thickness.  An example of using xsl:choose with tabstyle for table cell 
properties is shown here:

http://www.sagehill.net/docbookxsl/PrintTableStyles.html#CustomCellProperties

In the table.frame template, you could do that once at the top of the template 
to fill a variable, and then use that variable in place of 
$table.frame.border.thickness in the long set of frame choices that follow:

  <xsl:variable name="tabstyle">
    <xsl:call-template name="tabstyle"/>
  </xsl:variable>

  <xsl:variable name="frame.thickness">
    <xsl:choose>
      <xsl:when test="$tabstyle='thickborder'">2pt</xsl:when>
      <xsl:when test="$tabstyle='verythickborder'">4pt</xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$table.frame.border.thickness"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:variable>

And then replace all other instances in the template of 
$table.frame.border.thickness with $frame.thickness.

If you need to also change the rowsep and colsep (cell borders), then customize 
the template named 'border' in fo/table.xsl with the same technique.

Bob Stayton
Sagehill Enterprises
[email protected]


----- Original Message ----- 
From: [email protected] 
To: [email protected] 
Sent: Thursday, September 03, 2009 5:34 PM
Subject: [docbook-apps] Table Line Thickness


Hello everyone,

Is there a way to control the thickness of the border of each table separately? 
The common parameter only applies to ALL tables.

Maybe an additional PI?

Thanks
Dean Nelson

Reply via email to