In DocBook tables, you can control the horizontal and vertical positioning of content with a cell by using the
valign attributes, respectively. The scope of entries affected by the attribute depends on which table element has the attribute.
left center right char justify
A value of
char means the content should line up according to a certain character in the cell data, typically a decimal character. Then a column of numbers with decimals will have the decimals lined up. If you set
align="char" for a column, you need to specify a
char="." attribute (or other character) as well to tell the processor on what character to line up the entries.
align attribute can be set on any of the following elements, so it applies to the scope of that element:
tgroup colspec spanspec entry
For example, you could set
tgroup for the whole table (if you have one tgroup). Then you can set
align="center" in one
colspec to center all entries in that column. Here is an example.
<table><title>My table</title> <tgroup cols="4" align="left"> <colspec colnum="1" colname="col1" colwidth="1*" /> <colspec colnum="2" colname="col2" colwidth="2*" align="center" /> <colspec colnum="3" colname="col3" colwidth="1.5*"/> <colspec colnum="4" colname="col4" colwidth="1*" align="char" char="."/> <thead> ...
In this example, the
tgroup element sets the default alignment for the table to
left. Entries in column 2 will instead be centered, and entries in column 4 are to be aligned on the decimal character in the cell data.
top middle bottom
valign attribute can be set on any of the following elements so it applies to the scope of that element:
thead tbody tfoot row entry
For example, you could set
tbody for the whole table. Then you can set
valign="middle" in one
row to middle-align all cells in that row, or on a single
entry to middle-align only that cell. Here is an example.
<table><title>My table</title> <tgroup cols="4" > ... <thead valign="bottom"> ... <tbody valign="top"> <row valign="middle"> <entry>...</entry> <entry valign="top">...</entry> ...
In this example, the row alignment overrides the tbody alignment, and then the entry alignment overrides the row alignment.
It is possible to rotate the contents of individual table cells by 90 degree increments using special DocBook processing instructions. This can be useful when you have many narrow data columns that have long column headings. Rotating the column headings by 90 degrees can provide room for more columns.
This only works for printed output, and not all XSL-FO processors support such rotations. The processor must be able to support the
fo:block-container element inside the
fo:table-cell. The following is an example of a rotated table entry:
<entry><?dbfo orientation="90"?> <?dbfo rotated-width="1in"?>Cell rotated left </entry>
You have to provide two processing instructions to make this work. The
<?dbfo orientation="90"?> processing instruction tells the processor to rotate the text 90 degrees counter-clockwise. The
<?dbfo rotated-width="1in"?> processing instruction informs the processor of how wide the text was before it was rotated. That enables it to adjust the row-height to fit the length of the rotated text.
|DocBook XSL: The Complete Guide - 3rd Edition||PDF version available|
Copyright © 2002-2005 Sagehill Enterprises