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 <[EMAIL PROTECTED]> 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
[EMAIL PROTECTED]
----- Original Message -----
*From:* Robert Sleator <[EMAIL PROTECTED]>
*To:* [email protected]
*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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]