> What I don't understand is the relationship between columns and tables.
Well, the fo:table element requires one or more fo:table-column elements as children. In other words, you have to remember that XSL:FO requires you to specify the columns before you specify the table body. When you start specifying cells, FOP requires that each row have the same number of cells as the table has columns (though you can have one column span cells). Other processors might permit an empty cell, but FOP does no "thinking for you", so it requires that you spell out everything. In the following simple example, notice that the table-column elements and the table-body element are the immediate descendents (the children) of the table element. The rows and cells are and must be, because table-body has to contain them, deeper descendents (grandchildren and great-grandchildren, as it were). <fo:table table-layout="fixed"> <fo:table-column column-width="2in"/> <fo:table-column column-width="2.5in"/> <fo:table-column column-width="2in"/> <fo:table-body> <fo:table-row> <fo:table-cell> <fo:block xsl:use-attribute-sets="footerleft"> Date prepared: <xsl:value-of select="format-date(current-date(),'[D1] [MNn] [Y0001]')"/> </fo:block> </fo:table-cell> <fo:table-cell> <fo:block xsl:use-attribute-sets="footercenter"> Confidential and Proprietary </fo:block> </fo:table-cell> <fo:table-cell> <fo:block xsl:use-attribute-sets="footerright"> <fo:page-number/> </fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table> HTH Jay Bryant Bryant Communication Services (on contract at Syngeristic Solution Technologies) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]