If you are new to (X)HTML you may often wonder what are the
elements, attributes allowed for an (X)HTML element like table.
This appendix allows you to look at an element, like the table
element and read the rules for this element. For example if you
look at the attributes of a table element, the DTD says that it
allows a summary, width, border, frame, rules, cellspacing and
cellpadding attributes. If you want to read a bit more on what
the rules for the frame attribute, you can look up the %TFrame entity
in the XHTML reference.
The following is a copy from the Strict XHTML 1.0 DTD.
<!ELEMENT table
(caption?, (col*|colgroup*), thead?,
tfoot?, (tbody+|tr+))>
<!ELEMENT caption %Inline;>
<!ELEMENT thead (tr)+>
<!ELEMENT tfoot (tr)+>
<!ELEMENT tbody (tr)+>
<!ELEMENT colgroup (col)*>
<!ELEMENT col EMPTY>
<!ELEMENT tr
(th|td)+>
<!ELEMENT th %Flow;>
<!ELEMENT td %Flow;>
<!ATTLIST table
%attrs;
summary
%Text; #IMPLIED
width
%Length; #IMPLIED
border
%Pixels; #IMPLIED
frame
%TFrame; #IMPLIED
rules
%TRules; #IMPLIED
cellspacing %Length;
#IMPLIED
cellpadding %Length;
#IMPLIED
>
<!ATTLIST caption
%attrs;
>
<!--
colgroup groups a set of col elements. It allows you to group
several semantically related columns together.
-->
<!ATTLIST colgroup
%attrs;
span
%Number; "1"
width
%MultiLength; #IMPLIED
%cellhalign;
%cellvalign;
>
<!--
col elements define the alignment properties for cells
in
one or more columns.
The width attribute specifies the width of the columns,
e.g.
width=64 width in screen
pixels
width=0.5*
relative width of 0.5
The span attribute causes the attributes of one
col element to apply to more than one column.
-->
<!ATTLIST col
%attrs;
span
%Number; "1"
width
%MultiLength; #IMPLIED
%cellhalign;
%cellvalign;
>
<!--
Use thead to duplicate headers when breaking
table
across page boundaries, or for static headers
when
tbody sections are rendered in scrolling
panel.
Use tfoot to duplicate footers when breaking
table
across page boundaries, or for static footers
when
tbody sections are rendered in scrolling
panel.
Use multiple tbody sections when rules are
needed
between groups of table rows.
-->
<!ATTLIST thead
%attrs;
%cellhalign;
%cellvalign;
>
<!ATTLIST tfoot
%attrs;
%cellhalign;
%cellvalign;
>
<!ATTLIST tbody
%attrs;
%cellhalign;
%cellvalign;
>
<!ATTLIST tr
%attrs;
%cellhalign;
%cellvalign;
>
<!-- Scope is simpler than headers attribute for common tables
-->
<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
<!-- th is for headers, td for data and for cells acting as
both -->
<!ATTLIST th
%attrs;
abbr
%Text; #IMPLIED
axis
CDATA
#IMPLIED
headers
IDREFS #IMPLIED
scope
%Scope; #IMPLIED
rowspan
%Number; "1"
colspan
%Number; "1"
%cellhalign;
%cellvalign;
>
<!ATTLIST td
%attrs;
abbr
%Text; #IMPLIED
axis
CDATA
#IMPLIED
headers
IDREFS #IMPLIED
scope
%Scope; #IMPLIED
rowspan
%Number; "1"
colspan
%Number; "1"
%cellhalign;
%cellvalign;
>