Hi Gregorio,
Border properties for each side can be specified with three individual 
properties, or with a shortcut property that combines them.  For example, these 
three properties:

<xsl:attribute name="border-right-width">0.5pt</xsl:attribute>
<xsl:attribute name="border-right-style">solid</xsl:attribute>
<xsl:attribute name="border-right-color">white</xsl:attribute>

are equivalent to this shortcut:

<xsl:attribute name="border-right">0.5pt solid white</xsl:attribute>

with the three values specified in this order, as defined by the standard.  
Your example only specified two property values, so it did not work.

Another shortcut applies the properties to all sides if that is what you want:

<xsl:attribute name="border">0.5pt solid white</xsl:attribute>

The DocBook template named 'border' is in fo/table.xsl and is just a 
convenience for generating the three separate properties from the stylesheet 
parameters that set the default border properties.  If you want non-default 
border properties, then you cannot use the template named "border".  Also, in 
general a template will not accept being passed a param for which it does not 
have a param declaration.  The "border" template only has a param declared for 
"side", so trying to pass the color would not work as there is nothing to 
receive it in the template.

In table processing, each cell generally takes care of its own right-side and 
bottom-side borders only.  The top border is instead handled by the cell above 
or the table frame if it is the first cell in a column. Likewise, the left 
border is handled by the cell to the left or the table frame if it is the first 
cell in a row.  That avoids conflicts between neighboring cells, and follows 
the way CALS tables specify borders as rowsep (bottom) and colsep (right).

The DocBook XSL template named 'table.cell.properties' is called for each cell 
in the table, with the context node being the "entry" element of a CALS table 
or a "td" element of an HTML-markup table.  That template should be copied from 
fo/table.xsl to your customization layer and modified there.  If you aren't 
familiar with "customization layer", see:

http://www.sagehill.net/docbookxsl/CustomMethods.html#CustomizationLayer

There is also an example of customizing this template:

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

In your case, you want to set the column separator to white, so something like 
the following could be added to your customization of the template named 
'table.cell.properties'.  It first sets a variable to count rows, and then 
decides the border attribute with an xsl:choose statement to alternate white 
and black column borders.  

<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="''"/>

  <variable name="rownumber">
    <xsl:number count="row" from="tbody"/>
  </xsl:variable>

  <xsl:choose>
    <xsl:when test="$rownumber mod 2">
      <xsl:attribute name="border-right">0.5pt solid white</xsl:attribute>
    </xsl:when>
    <xsl:otherwise>
      <xsl:attribute name="border-right">0.5pt solid black</xsl:attribute>
   </xsl:otherwise>
  </xsl:choose>

...


Bob Stayton
Sagehill Enterprises
[email protected]


  ----- Original Message ----- 
  From: Gregorio Pevaco 
  To: [email protected] ; [email protected] 
  Sent: Monday, June 04, 2012 1:11 PM
  Subject: Re: [docbook-apps] striped table border colors


      I realize it has been several months since I broached this subject. As 
this was a back-burner issue I have only recently revisited this. However, I 
have not been able to generate the results I had hoped for yet. 

      I am trying to customize the fo/table.xsl to address the 
cell.border.color as is the subject here. 


      My first question is that there seem to be two areas that refer to 
table.cell.properties, I am assuming the one I want is the 2nd one following 
the <!-- Expand this template to add properties to any fo:table-cell --> 
comment. 


      OK, now from the comment, and some dabbling, should I assume the right 
approach is to add that structure to my custom layer... or do I want to modify 
the table.xsl straight away?


      The second and biggest problem I am having is that I am not sure what the 
right 'call' to get the column separators other than black. 
      My first attempt as illustrated in my first letter: 
      <xsl:attribute name="border-right">0.5pt white</xsl:attribute> 
<xsl:attribute name="border-left">0.5pt white</xsl:attribute> 
      did not work, but seems like it might be going down the right road. 


      I have tried something along these lines:
            <xsl:call-template name="border">
                <xsl:with-param name="table.cell.border.color" 
select="'white'"/>
              </xsl:call-template>


      Not to throw more confusion at this with bad code, than necessary. What 
would be the correct structure to get the the column rules to turn white? 
      I wonder if you might be able to supply some example of the code to do 
that? 


      I hope that is not too much to ask, but it would really help as I have 
run into a wall here. 


      Thank you kindly!


      /G. 
  -----Original Message-----
  From: Bob Stayton <[email protected]>
  To: docbook-apps <[email protected]>; Gregorio Pevaco 
<[email protected]>
  Sent: Thu, Mar 1, 2012 1:55 am
  Subject: Re: [docbook-apps] striped table border colors


  Hi Gregorio,
  Borders within a table are set on table cells, not on rows.  I believe the 
reason for that must be cell spans, which can put the bottom of a cell in one 
row in the next row or several rows.

  Customize the template 'table.cell.properties' from fo/table.xsl to set the 
custom borders.

  Bob Stayton
  Sagehill Enterprises
  [email protected]


    ----- Original Message ----- 
    From: Gregorio Pevaco 
    To: [email protected] 
    Sent: Wednesday, February 29, 2012 2:05 PM
    Subject: [docbook-apps] striped table border colors


    Hello: 

    I have a particular style of table I am attempting to generate into PDF 
using the fo stylesheets.  
    Specifically I am getting custom striped rows, but I also need to generate 
white rowsep/colsep or cell borders. I am trying to do this in my custom layer, 
and here is a piece of the xsl:



    <xsl:template name="table.row.properties">
      <xsl:variable name="tabstyle">
        <xsl:call-template name="tabstyle"/>
      </xsl:variable>
       <xsl:variable name="rownum">
        <xsl:number from="tgroup" count="row"/>
      </xsl:variable>
      <xsl:choose>
        <xsl:when test="$tabstyle = 'striped'">
          <xsl:if test="$rownum mod 2 = 0">
            <xsl:attribute name="background-color">#939598</xsl:attribute>
            <!--attributes to change border colors?-->
    <xsl:attribute name="border-right">0.5pt white</xsl:attribute>
            <xsl:attribute name="border-left">0.5pt white</xsl:attribute>
          </xsl:if>
        <xsl:if test="$rownum mod 2 != 0">
          <xsl:attribute name="background-color">#bcbec0</xsl:attribute>
    <!--?attributes to change border colors?-->    
        </xsl:if>
       </xsl:when>
     </xsl:choose>
    </xsl:template>






    Obviously this is not working, the portions following <!--attributes to 
change border colors?--> are simply variations of my attempts to get some sort 
of change to the table.cell.properties, 
    however I could not find any sort of combination to get the result I wish 
for, which would be white colored rules between the cells of the table. 


    Is this even possible? Any suggestions?


    Thank you for taking the time to read my questions.
    /Gregorio

Reply via email to