Example 1: Table Columns

Top Previous Topic Next Topic  Print this topic

All table elements must have columns specified; all columns must have column-width defined.

 

For example, this XSL-FO will generate a strict formatting error, because there are no columns:

 

<?xml version="1.0" encoding="utf-8"?>

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

       <fo:layout-master-set>

               <fo:simple-page-master master-name="all-pages" page-width="8.5in" page-height="11in">

               </fo:simple-page-master>

               <fo:page-sequence-master master-name="default-sequence">

                       <fo:repeatable-page-master-reference master-reference="all-pages"/>

               </fo:page-sequence-master>

       </fo:layout-master-set>

       <fo:page-sequence master-reference="default-sequence">

               <fo:flow flow-name="xsl-region-body" font-size="12pt" font-family="Times New Roman">

                       <!-- table layout not specified, will default to 'auto' which leads to slower processing -->

                       <fo:table>

                               <!-- no columns specified, must do automatic layout which is a huge performance penalty -->

                               <fo:table-body>

                                       <fo:table-row>

                                               <fo:table-cell>

                                                       <fo:block>cell text</fo:block>

                                               </fo:table-cell>

                                       </fo:table-row>

                               </fo:table-body>

                       </fo:table>

               </fo:flow>

       </fo:page-sequence>

</fo:root>

 

The following XSL-FO will render fine:

 

<?xml version="1.0" encoding="utf-8"?>

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

       <fo:layout-master-set>

               <fo:simple-page-master master-name="all-pages" page-width="8.5in" page-height="11in">

               </fo:simple-page-master>

               <fo:page-sequence-master master-name="default-sequence">

                       <fo:repeatable-page-master-reference master-reference="all-pages"/>

               </fo:page-sequence-master>

       </fo:layout-master-set>

       <fo:page-sequence master-reference="default-sequence">

               <fo:flow flow-name="xsl-region-body" font-size="12pt" font-family="Times New Roman">

                       <!-- table layout must be specified as 'fixed' -->

                       <fo:table table-layout="fixed">

                               <!-- columns specified, everything is ok -->

                               <!-- also don't forget to specify column width! -->

                               <fo:table-column column-width="proportional-column-width(1)"/>

                               <fo:table-column column-width="proportional-column-width(1)"/>

                               <fo:table-body>

                                       <fo:table-row>

                                               <fo:table-cell>

                                                       <fo:block>cell text</fo:block>

                                               </fo:table-cell>

                                               <fo:table-cell>

                                                       <fo:block>cell text</fo:block>

                                               </fo:table-cell>

                                       </fo:table-row>

                               </fo:table-body>

                       </fo:table>

               </fo:flow>

       </fo:page-sequence>

</fo:root>