Next in thread → Next in month →

Re: [docbook-apps] Table Header Column Formatting

From
Bob Stayton <>
Date
2009-04-05T22:23:26+00:00
ID
002301c9b63d$1cd8cb80$6400a8c0@pazu
Thread
Re: [docbook-apps] Table Header Column Formatting
Hi Marcel,

In DocBook 4.5, the role attribute is not permitted 
on the colspec element.  However, it is for DocBook 5. So you could add 
role attributes to colspec and test for them.

 

There is a utility template named 
'inherited.table.attribute' that can find an attribute value for an entry or 
from any of its table ancestors.  It will also check the colspec for the 
entry's column, since some properties like align can be set there. So you can 
customize the template name 'table.cell.properties' to fetch the value of the 
'role' attribute and add properties based on its value.  This snippet shows 
how it can be done:

 

<xsl:template 
name="table.cell.properties">
  <xsl:param name="bgcolor.pi" 
select="''"/>
  <xsl:param name="rowsep.inherit" 
select="1"/>
  <xsl:param name="colsep.inherit" 
select="1"/>
  <xsl:param name="col" select="1"/>
  
<xsl:param name="valign.inherit" select="''"/>
  <xsl:param 
name="align.inherit" select="''"/>
  <xsl:param 
name="char.inherit" select="''"/>

  

<!-- Add this variable -->

  <xsl:variable 
name="role.attribute">
    <xsl:call-template 
name="inherited.table.attribute">
      
<xsl:with-param name="entry" 
select="."/>
      <xsl:with-param 
name="attribute" select="'role'"/>
      
<xsl:with-param name="colnum" select="$col"/>
    
</xsl:call-template>
  </xsl:variable>

 

  <xsl:choose>
    
<xsl:when test="ancestor::d:tgroup">
      
<xsl:if test="$bgcolor.pi != 
''">
        <xsl:attribute 
name="background-color">
          
<xsl:value-of 
select="$bgcolor.pi"/>
        
</xsl:attribute>
      
</xsl:if>

 

<!-- Add this test -->

      <xsl:if 
test="$role.attribute = 
'colspecrole'">
        
<xsl:attribute 
name="background-color">
          
<xsl:value-of 
select="'#AEEEEE'"/>
        
</xsl:attribute>
      
</xsl:if>

...

 

 

Bob Stayton
Sagehill Enterprises


 

 

  
----- Original Message ----- 

  
From: 
  Marcel Tromp 

  
To: Bob Stayton 

  
Cc:  
  

  
Sent: Saturday, April 04, 2009 11:10 
  PM

  
Subject: Re: [docbook-apps] Table Header 
  Column Formatting

  

Correct, I am looking at print output.
  

  
I was hoping to be able to do column specific formatting based on 
  defining a role in the colspec. This does not seem possible, correct?

  

  
As an alternative, I have been trying to put a role on 'entry', but have 
  not been successful. How do I change table.cell.properties based on an 
  attribute of an ancestor?

  

  
Regards,

  

  
Marcel

  
--

  

  
On Sun, Mar 29, 2009 at 8:14 PM, Bob Stayton <> wrote:

  
    

    
Hi,

    
I presume you are asking about printed output, 
    not HTML output.

    
There is a named template that handles the 
    format properties on each table cell, and another to apply format properties 
    to the fo:block inside each cell.  These are described in these two 
    sections of my book:

    
 

    
http://www.sagehill.net/docbookxsl/PrintTableStyles.html#table.cell.properties

    
 

    
http://www.sagehill.net/docbookxsl/PrintTableStyles.html#table.cell.block.properties

    
 

    
You could customize these using additional 
    xpath selectors.  The existing template uses "ancestor::thead" to 
    test for table header cells.  You could use 
    "count(preceding-sibling::entry) = 0" to detect first cells in each 
    row.

    
 

    
Bob Stayton
Sagehill Enterprises


    

    

    

    
 

    
 

    
      
----- Original Message ----- 

      
From: Marcel Tromp 

      
To:  

      
Sent: Saturday, March 28, 2009 10:10 
      PM

      
Subject: [docbook-apps] Table Header 
      Column Formatting

      

Is there an easy way do define a stylesheet that will 
      format the cells in a header column the same way the cells are formatting 
      in a header (thead) row? 
      

      
Marcel

      
--
Next in thread → Next in month →