Table Cells (TH and TD)
Permitted Context: TR
Content Model: %body.content
The TH and TD elements are used for table cells. TH is used for table
header cells while TD is used for table data cells. This distinction
gives user agents a means to render such cells distinctly, for instance
by using a larger or heavier font for header cells. It is also needed when
rendering to speech. The CLASS attribute can be used to further
differentiate cells, for instance into heads and subheads. This can be
used together with style sheets to control the cell border style, and
fill color etc.
The horizontal and vertical alignment of cell contents are determined
by the ALIGN and VALIGN attributes respectively. In their absence, the
alignment will be inherited from the TR element for the row. The COLSPEC
attribute of the enclosing TABLE element provides a convenient way of
specifying the default horizontal alignment for columns.
The AXIS and AXES attributes can be used when rendering to speech to
provide abbreviated names for each cell's headers. Another application is
when you want to be able to later process table contents to enter them
into a database. Theses attributes are then used to give database field
names. The table's class attribute should be used to let the software
recognise which tables can be treated in this way.
Note: Disabling word wrap and using the <BR> element in
order to control cell widths is discouraged in favor of using the table
COLSPEC and WIDTH attributes.
Permitted Attributes for the TH/TD Element
- An SGML identifier used as the target for hypertext
links or for naming particular elements in associated style sheets.
Identifiers are NAME tokens and must be unique within the scope of
the current document.
- This is one of the ISO standard language abbreviations,
e.g. "en.uk" for the variation of English spoken in the United Kingdom.
It can be used by parsers to select language specific choices for
quotation marks, ligatures and hypenation rules etc. The language
attribute is composed from the two letter language code from ISO 639,
optionally followed by a period and a two letter country code from ISO
- This a space separated list of SGML NAME tokens and is
used to subclass tag names. By convention, the class names are
interpreted hierarchically, with the most general class on the left
and the most specific on the right, where classes are separated by a
period. The CLASS attribute is most commonly used to attach a
different style to some element, but it is recommended that where
practical class names should be picked on the basis of the element's
semantics, as this will permit other uses, such as restricting search
through documents by matching on element class names. The conventions
for choosing class names are outside the scope of this specification.
- The number of columns spanned by this cell. This allows
you to merge cells across columns. It defaults to 1 (one).
- The number of rows spanned by this cell. This allows
you to merge cells across rows. It defaults to 1 (one).
- The ALIGN attribute can be used to explicitly specify
the horizontal alignment of paragraphs within a table row:
- Paragraphs are rendered flush left. This is the
default for data cells (TD).
- Paragraphs are centered. This is the default for
header cells (TH).
- Paragraphs are rendered flush right.
- Text lines are justified where practical,
otherwise this gives the same effect as the align=left
- Text lines are indented such that the first
occurrence of a decimal point on each line are aligned vertically. If a
line doesn't contain a decimal point, the line is rendered flush left
for data cells and centered for header cells.
Note: In the absence of the ALIGN attribute, the default is
overridden by the presence of an ALIGN attribute on the parent TR element,
or by the COLSPEC attribute on the TABLE element. The COLSPEC attribute
takes precedence over the TR element though!
- This specifies the character to be used for the decimal
point with the ALIGN attribute, e.g. dp="." (the default) or dp=",".
The default may be altered by the language context, as set by the LANG
attribute on enclosing elements.
- The VALIGN attribute can be used to explicitly specify
the vertical alignment of material within a table cell:
- The cell contents appear at the top of each cell
- Cell contents are centered vertically in each cell.
- The cell contents appear at the bottom of each
- This is used when you want to ensure that all
cells in the row with valign=baseline share the same baseline.
This constraint only applies to the first text line for each cell.
Note: In the absence of the VALIGN attribute, the default can
be overridden by the presence of a VALIGN attribute on the parent TR
- The NOWRAP attribute is used when you don't want the
browser to automatically wrap lines. You can then explicitly specify
line breaks in paragraphs using the BR element.
- This defines an abbreviated name for a header cell, which
can be used when rendering to speech. It defaults to the cell's content.
- This is a comma separated list of axis names which together
identify the row and column headers that pertain to this cell. It is used
when rendering to speech to identify the cell's position in the table. If
missing the user agent can try to follow up columns and left along rows
(right for some languages) to find the corresponding header cells.
Note: a subheader cell may include both attributes - using
AXIS to name itself and AXES to name the parent header cell. When data
cells refer to header cells with both attributes, the parent header cells
are found by following back the head-subhead relationships.