The HTML Table DTD (1995-10-10)
Scripting is disabled and therefore
annotations cannot be shown.
<!-- Content model entities imported from parent DTD:
%body.content; allows table cells to contain headers, paras,
lists, form elements and even arbitrarily nested tables.
%text; is text characters, including character entities and
character emphasis elements, IMG and anchors
-->
<!ENTITY % attrs
"id ID #IMPLIED -- element identifier --
class NAMES #IMPLIED -- used with style sheets --
dir (ltr|rtl) #IMPLIED -- I18N text direction --
lang NAME #IMPLIED -- as per RFC 1766 --">
<!--
The BORDER attribute sets the thickness of the frame around the
table. The default units are screen pixels.
The FRAME attribute specifies which parts of the frame around
the table should be rendered. The values are the same as for
the CALS table model:
none no frame
top render only the top part of the frame
bottom render only the bottom part of the frame
topbot render both top and bottom parts
sides render both left and right parts
all render all four parts
border render all four parts
The value "border" is included for backwards compatibility with
<TABLE BORDER> which yields frame=border and border=implied
For <TABLE BORDER=1> you get border=1 and frame=implied. In this
case, its appropriate to treat this as frame=border for backwards
compatibility with deployed browsers.
The RULES attribute defines which rules to draw between cells:
none no rules between cells
basic rule between thead/tbody and tbody/tbody
rows as per basic plus row separators
cols as per basic plus column group separators
all between all rows and all columns
If RULES is absent then assume:
"none" if BORDER is absent or BORDER=0 otherwise "all"
-->
<!ENTITY % Frame "(none|top|bottom|topbot|sides|all|border)">
<!ENTITY % Rules "(none | basic | rows | cols | all)">
<!-- horizontal placement of table relative to window -->
<!ENTITY % Where "(left|center|right|float-left|float-right)">
<!-- horizontal alignment attributes for cell contents -->
<!ENTITY % cell.halign
"align (left|center|right|justify|char) #IMPLIED
char CDATA #IMPLIED -- alignment char, e.g. char=':' --
charoff NUTOKEN 50 -- % offset for alignment char --"
>
<!-- vertical alignment attributes for cell contents -->
<!ENTITY % cell.valign
"valign (top|middle|bottom|baseline) #IMPLIED"
>
<!ELEMENT table - - (caption?, col*, thead?, tfoot?, tbody+)>
<!ELEMENT caption - - (%text;)+>
<!ELEMENT thead - O (tr+)>
<!ELEMENT tfoot - O (tr+)>
<!ELEMENT tbody O O (tr+)>
<!ELEMENT col - O EMPTY>
<!ELEMENT tr - O (th|td)+>
<!ELEMENT (th|td) - O %body.content>
<!-- To provide an effective check that a table is valid, validation
programs need to check that attribute values are mutually consistent. This
is beyond the scope of tools like sgmls. The %Frame and %Rule attribute
value sets both include "all" and "none". This is deliberate and intended
to avoid the authoring errors that would occur if they were different. As a
result, NAME is used for rules to keep SGML parsers happy. -->
<!ATTLIST table -- table element --
%attrs; -- id, lang, dir and class --
align %Where; #IMPLIED -- table position relative to window --
width CDATA #IMPLIED -- table width relative to window --
cols NUMBER #IMPLIED -- used for immediate display mode --
border CDATA #IMPLIED -- controls frame width around table --
frame %Frame; #IMPLIED -- which parts of table frame to include --
rules NAME #IMPLIED -- %Rules; controls rules between cells --
cellspacing NUMBER #IMPLIED -- spacing between cells --
cellpadding NUMBER #IMPLIED -- spacing within cells --
>
<!-- ALIGN is used here for compatibility with deployed browsers -->
<!ENTITY % Caption "(top|bottom|left|right)">
<!ATTLIST caption -- table caption --
%attrs; -- id, lang, dir and class --
align %Caption; #IMPLIED -- relative to table --
>
<!--
COL elements define groups of columns and the alignment
properties of their cells. The WIDTH attribute specifies the
width of the columns, e.g.
width=64 width in "pixels", see earlier note on units
width=0.5* relative width of 0.5 (default is 1.0)
Percentage widths are inappropriate as you would need to check that
the numbers add up, and they would all have to be changed if a column
was inserted or removed. The "*" suffix is used to simplify importing
tables from the CALS representation.
-->
<!ATTLIST col -- column groups and properties --
%attrs; -- id, lang, dir and class --
span NUMBER 1 -- number of columns spanned by group --
width CDATA #IMPLIED -- relative width e.g. 2.5 --
%cell.halign; -- horizontal alignment in cells --
%cell.valign; -- vertical alignment in cells --
>
<!--
Use THEAD to duplicate headers when breaking table
across page boundaries, or for static headers when
body sections are rendered in scrolling panel.
Use TFOOT to duplicate footers when breaking table
across page boundaries, or for static footers when
body sections are rendered in scrolling panel.
Use multiple TBODY sections when rules are needed
between groups of table rows.
-->
<!ATTLIST (thead|tbody|tfoot) -- table section --
%attrs; -- id, lang, dir and class --
%cell.halign; -- horizontal alignment in cells --
%cell.valign; -- vertical alignment in cells --
>
<!ATTLIST tr -- table row --
%attrs; -- id, lang, dir and class --
%cell.halign; -- horizontal alignment in cells --
%cell.valign; -- vertical alignment in cells --
>
<!ATTLIST (th|td) -- header or data cell --
%attrs; -- id, lang, dir and class --
axis CDATA #IMPLIED -- defaults to cell content --
axes CDATA #IMPLIED -- list of axis names --
nowrap (nowrap) #IMPLIED -- suppress word wrap --
rowspan NUMBER 1 -- number of rows spanned by cell --
colspan NUMBER 1 -- number of cols spanned by cell --
%cell.halign; -- horizontal alignment in cells --
%cell.valign; -- vertical alignment in cells --
>