Next in thread → Next in month →

Re: [docbook-apps] borders missing on continued tables

From
Robert Sleator <>
Date
2007-05-02T17:49:57+00:00
ID
Thread
Re: [docbook-apps] borders missing on continued tables
I solved the problem by copying the "table.frame" template (from table.xsl)
to my customization layer and changing 
    <xsl:attribute name="border-top-width">
to
    <xsl:attribute name="
border-top-width.length">
and
    <xsl:attribute name="border-bottom-width">
to
    <xsl:attribute name="border-bottom-width.length">

("border-top-width" also appears in the "calsTable" template where I'm guessing

it comes into play if a table has more than one tgroup, but I didn't test this.)

In addition, I used this attribute set:

  <xsl:attribute-set name="table.table.properties">
    <xsl:attribute name="
border-before-width.length">0.5pt</xsl:attribute>
    <xsl:attribute name="border-after-width.length">0.5pt</xsl:attribute>
    <xsl:attribute name="border-before-width.conditionality
">retain</xsl:attribute>
    <xsl:attribute name="border-after-width.conditionality">retain</xsl:attribute>
  </xsl:attribute-set>

The idea for doing this came from this post:

http://www.mail-archive.com/[email protected]/msg07006.html
which says, among other things,

  "If you specify them by means of the shorthands (border, border- width...) or

  corresponding properties (border-top-width, border- bottom-width...), then the
  .conditionality component defaults to "discard" and cannot be overridden by
  using the extended, native XSL properties."

This is apparently based on a much stricter reading of the FO standard for
FOP 0.93.

On 4/30/07, Bob Stayton <
> wrote:

I suspect it is a bug in the table handling code in 
FOP 0.93.  Other XSL-FO processors output the top rule on the continued 
tables.

 

Bob Stayton
Sagehill Enterprises
DocBook 
Consulting


 

 

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

  

From: 
  Robert 
  Sleator 

  
To: 
 
  

  
Sent: Friday, April 27, 2007 11:00 
  PM

  
Subject: [docbook-apps] borders missing 
  on continued tables

  

I had such a good response with my last problem (thanks, 
  Bob!) that I thought
I'd try another.  On tables that continue across 
  a page boundary the top
border on the second (and subsequent) pages is 
  missing.  From some previous 
posts I had the impression that setting 
  "border-before-width.conditionality"
to "retain" was supposed to take care 
  of this, but it doesn't seem to.
(See the attached .png file for a 
  screenshot.) 

I am using DocBook 4.12, docbook-xsl-1.72.0, FOP 0.93 
  (with the patch
that Bob Stayton mentioned in reply to me previous post), 
  jre1.6.0, and
Windows XP.

I have the following table-related 
  parameters and attributes set: 

  <xsl:param 
  name="default.table.width" select="'5in'"></xsl:param>
  
  <xsl:param name="tablecolumns.extension" select="'1'"></xsl:param> 
  
  <xsl:param name="table.layout" 
  select="'fixed'"></xsl:param>

  <xsl:attribute-set 
  name="table.properties">
    <xsl:attribute 
  name="keep-together.within-column 
  ">auto</xsl:attribute>
    <xsl:attribute 
  name="keep-with-next">always</xsl:attribute>
  
  </xsl:attribute-set>

  <xsl:attribute-set 
  name="table.table.properties ">
    <xsl:attribute 
  name="border-before-width.conditionality">retain</xsl:attribute>
    
  <xsl:attribute 
  name="border-after-width.conditionality">retain</xsl:attribute> 
  
    <xsl:attribute 
  name="border-before-style">solid</xsl:attribute>
  
  </xsl:attribute-set>

The document source is as 
  follows:

<chapter>
<title>A Chapter</title> 
  
<sect1><title>A Sect1</title>
<para>aslkdjfal 
  slasjk laskdj lskjdf lskjf</para>
<table frame = "all" colsep = 
  "1" rowsep = "1">
<title>a table</title> 
<tgroup cols 
  = "3" colsep = "1" rowsep = "1">
<colspec colnum = "1" colname = "1" 
  colwidth = "1.507in"/>
<colspec colnum = "2" colname = "2" colwidth = 
  " 2.482in"/>
<colspec colnum = "3" colname = "3" colwidth = 
  "1.011in"/>
<thead>
<row rowsep = "1">
<entry 
  colname = "1">Foo and Bar</entry> 
<entry colname = 
  "2">Language or Function</entry>
<entry colname = 
  "3">Command</entry>
</row>
</thead>
<tbody>
<row 
  rowsep = "1"> 
<entry colname = 
  "1">Apple</entry>
<entry colname = 
  "2">aaaaaaaaaaaaa</entry>
<entry colname = 
  "3">11111111</entry>
</row>
<row rowsep = "1"> 
  
<entry colname = "1">Orange</entry>
<entry colname = 
  "2">bbbbbbbbbbbbbbbb</entry>
<entry colname = 
  "3">2222222222</entry>
</row>
<row rowsep = "1" 
  condition = "nonpvf"> 
<entry colname = 
  "1">Banana</entry>
<entry colname = 
  "2">cccccccccc</entry>
<entry colname = 
  "3">333333333</entry>
</row>
<row rowsep = "1" 
  condition = "nonpvf"> 
<entry colname = 
  "1">Plantain</entry>
<entry colname = 
  "2">ddddddddddd</entry>
<entry colname = 
  "3">4444</entry>
</row>
<row rowsep = "1" condition = 
  "nonpvf"> 
<entry colname = "1">Acerola</entry>
<entry 
  colname = "2">eeeeeeeeeeeeeeeeeee </entry>
<entry colname = 
  "3">55555555</entry>
</row>
<row rowsep = "1"> 
  
<entry colname = "1">Watermelon</entry>
<entry colname = 
  "2">fffffffffffffffffff</entry>
<entry colname = 
  "3">66666666</entry>
</row>
<row rowsep = 
  "0">
<entry colname = "1">Kiwi</entry>
<entry colname 
  = "2">gggggggggggggggggg</entry>
<entry colname = 
  "3">7777777</entry> 
  
</row>
</tbody>
</tgroup></table>
<para>sldkflskf</para>
<para>sldkflskf</para>
<para>sldkflskf</para>
<para>sldkflskf</para>

<para>sldkflskf</para>
<para>sldkflskf</para>
<para>sldkflskf</para>
<para>sldkflskf</para>
<table 
  frame = "all" colsep = "1" rowsep = "1"><title id = "BABIBJJC">Banana 
  
Options</title>
<tgroup cols = "8" colsep = "1" rowsep = 
  "1">
<colspec colnum = "1" colname = "1" colwidth = 
  "1.413in"/>
<colspec colnum = "2" colname = "2" colwidth = " 
  0.719in"/>
<colspec colnum = "3" colname = "3" colwidth = 
  "0.541in"/>
<colspec colnum = "4" colname = "4" colwidth = 
  "0.531in"/>
<colspec colnum = "5" colname = "5" colwidth = " 
  0.562in"/>
<colspec colnum = "6" colname = "6" colwidth = 
  "0.561in"/>
<colspec colnum = "7" colname = "7" colwidth = 
  "0.561in"/>
<colspec colnum = "8" colname = "8" colwidth = " 
  1.171in"/>
<thead>
<row rowsep = "1">
<entry 
  colname = "1">Peel</entry>
<entry colname = 
  "2">2-bit</entry>
<entry colname = "3">4-bit</entry> 
  
<entry colname = "4">8-bit</entry>
<entry colname = 
  "5">16-bit</entry>
<entry colname = 
  "6">32-bit</entry>
<entry colname = "7">64-bit</entry> 
  
<entry colname = "8">United 
  Fruitcake</entry>
</row>
</thead>
<tbody>
<row 
  rowsep = "1">
<entry colname = "1">Zipper</entry> 
  
<entry colname = 
  "2"><para></para></entry>
<entry colname = 
  "3"><para></para></entry>
<entry colname = 
  "4"><para></para></entry> 
<entry colname = 
  "5"><para></para></entry>
<entry colname = 
  "6"><para>X</para></entry>
<entry colname = 
  "7"><para></para></entry> 
<entry colname = 
  "8"><para>X</para></entry>
</row>
<row 
  rowsep = "1">
<entry colname = 
  "1">Velcro</entry>
<entry colname = 
  "2"><para>X</para></entry> 
<entry colname = 
  "3"><para>X</para></entry>
<entry colname = 
  "4"><para></para></entry>
<entry colname = 
  "5"><para></para></entry> 
<entry colname = 
  "6"><para>X</para></entry>
<entry colname = 
  "7"><para></para></entry>
<entry colname = 
  "8">X</entry>
</row>
<row rowsep = 
  "1">
<entry colname = 
  "1"><para>Lacing</para></entry>
<entry colname = 
  "2"><para>X</para></entry>
<entry colname = 
  "3"><para>X</para></entry>
<entry colname = 
  "4"><para>X</para></entry>
<entry colname = 
  "5"><para></para></entry> 
<entry colname = 
  "6"><para>X</para></entry>
<entry colname = 
  "7"><para>X</para></entry>
<entry colname = 
  "8">X</entry>
</row>
<row rowsep = 
  "0">
<entry colname = "1">Buttons</entry>
<entry 
  colname = "2"><para>X</para></entry>
<entry colname 
  = "3"><para>X</para></entry> 
<entry colname = 
  "4"><para>X</para></entry>
<entry colname = 
  "5"><para></para></entry>
<entry colname = 
  "6"><para>X</para></entry> 
<entry colname = 
  "7"><para>X</para></entry>
<entry colname = 
  "8"><para>X</para></entry>
</row>
<row 
  rowsep = "1">
<entry colname = "1">Zipper</entry> 
  
<entry colname = 
  "2"><para></para></entry>
<entry colname = 
  "3"><para></para></entry>
<entry colname = 
  "4"><para></para></entry> 
<entry colname = 
  "5"><para></para></entry>
<entry colname = 
  "6"><para>X</para></entry>
<entry colname = 
  "7"><para></para></entry> 
<entry colname = 
  "8"><para>X</para></entry>
</row>
<row 
  rowsep = "1">
<entry colname = 
  "1">Velcro</entry>
<entry colname = 
  "2"><para>X</para></entry> 
<entry colname = 
  "3"><para>X</para></entry>
<entry colname = 
  "4"><para></para></entry>
<entry colname = 
  "5"><para></para></entry> 
<entry colname = 
  "6"><para>X</para></entry>
<entry colname = 
  "7"><para></para></entry>
<entry colname = 
  "8">X</entry>
</row>
<row rowsep = 
  "1">
<entry colname = 
  "1"><para>Lacing</para></entry>
<entry colname = 
  "2"><para>X</para></entry>
<entry colname = 
  "3"><para>X</para></entry>
<entry colname = 
  "4"><para>X</para></entry>
<entry colname = 
  "5"><para></para></entry> 
<entry colname = 
  "6"><para>X</para></entry>
<entry colname = 
  "7"><para>X</para></entry>
<entry colname = 
  "8">X</entry>
</row>
<row rowsep = 
  "0">
<entry colname = "1">Buttons</entry>
<entry 
  colname = "2"><para>X</para></entry>
<entry colname 
  = "3"><para>X</para></entry> 
<entry colname = 
  "4"><para>X</para></entry>
<entry colname = 
  "5"><para></para></entry>
<entry colname = 
  "6"><para>X</para></entry> 
<entry colname = 
  "7"><para>X</para></entry>
<entry colname = 
  "8"><para>X</para></entry>
</row>
<row 
  rowsep = "1">
<entry colname = "1">Zipper</entry> 
  
<entry colname = 
  "2"><para></para></entry>
<entry colname = 
  "3"><para></para></entry>
<entry colname = 
  "4"><para></para></entry> 
<entry colname = 
  "5"><para></para></entry>
<entry colname = 
  "6"><para>X</para></entry>
<entry colname = 
  "7"><para></para></entry> 
<entry colname = 
  "8"><para>X</para></entry>
</row>
<row 
  rowsep = "1">
<entry colname = 
  "1">Velcro</entry>
<entry colname = 
  "2"><para>X</para></entry> 
<entry colname = 
  "3"><para>X</para></entry>
<entry colname = 
  "4"><para></para></entry>
<entry colname = 
  "5"><para></para></entry> 
<entry colname = 
  "6"><para>X</para></entry>
<entry colname = 
  "7"><para></para></entry>
<entry colname = 
  "8">X</entry>
</row>
<row rowsep = 
  "1">
<entry colname = 
  "1"><para>Lacing</para></entry>
<entry colname = 
  "2"><para>X</para></entry>
<entry colname = 
  "3"><para>X</para></entry>
<entry colname = 
  "4"><para>X</para></entry>
<entry colname = 
  "5"><para></para></entry> 
<entry colname = 
  "6"><para>X</para></entry>
<entry colname = 
  "7"><para>X</para></entry>
<entry colname = 
  "8">X</entry>
</row>
<row rowsep = 
  "0">
<entry colname = "1">Buttons</entry>
<entry 
  colname = "2"><para>X</para></entry>
<entry colname 
  = "3"><para>X</para></entry> 
<entry colname = 
  "4"><para>X</para></entry>
<entry colname = 
  "5"><para></para></entry>
<entry colname = 
  "6"><para>X</para></entry> 
<entry colname = 
  "7"><para>X</para></entry>
<entry colname = 
  "8"><para>X</para></entry>
</row>
</tbody>
</tgroup></table></sect1></chapter> 
  

The 'border-before-width.conditionality="retain"' is being 
  passed through to the "fo:table" 
  element:

<fo:table
border-before-width.conditionality="retain" 
  
border-collapse="collapse"
border-after-width.conditionality="retain"
border-before-style="solid"
border-left-style="solid"
border-right-style="solid"

border-top-style="solid" 
  
border-bottom-style="solid"
border-left-width="0.5pt"
border-right-width="0.5pt"
border-top-width="0.5pt"
border-bottom-width="0.5pt"
border-left-color="black" 
  
border-right-color="black"
border-top-color="black"
border-bottom-color="black"
table-layout="fixed"
width="1.413in 
  + 0.719in + 0.541in + 0.531in + 0.562in + 0.561in + 0.561in + 
  1.171in">

There is a second issue with this table that I don't 
  think is related, which is
that it prints the thead at the bottom of the 
  page, with no rows of data, which
seems rather useless, and then 
  immediately prints it again at the start of the 
next page.  I get the 
  missing borders even when this doesn't occur, but this
seems rather 
  odd.

Am I missing something somewhere ?  Any suggestions would be 
  appreciated.

  

  

  

---------------------------------------------------------------------
To 
  unsubscribe, e-mail: 
For 
  additional commands, e-mail: 
Next in thread → Next in month →