Proposed HTML/ICADD Table Model Level Two

Yuri Rubinsky (yuri@sq.com)
Mon, 3 Oct 1994 23:24:00 -0400

<!-- html-t2.dtd

Document Type Definition for the HyperText Markup Language (HTML DTD)
Level Two (Table with Optional Complex Formatting)
$Id: html-t2.dtd,v 0.9 1994/09/21 11:14:23 yuri $

Authors: Dave Raggett, Yuri Rubinsky and ICADD (Contact: <yuri@sq.com>)
See Also: html.decl, html-0.dtd, html-1.dtd, html.dtd
http://www.hal.com/%7Econnolly/html-spec/index.html
http://info.cern.ch/hypertext/WWW/MarkUp2/MarkUp.html
-->

<!ENTITY % HTML.Version
"+//ISBN 82-7640-037::WWW//DTD HTML TBL-2 PROPOSED//EN//x.0"

-- Typical usage:

<!DOCTYPE HTML PUBLIC "+//ISBN 82-7640-037::WWW//DTD HTML//EN">
<html>
...
</html>
--
>

<!-- Include all other DTDs + extensions -->

<!ENTITY % block-2 "| FORM | ISINDEX | TABLE">

<!ENTITY % html PUBLIC "+//ISBN 82-7640-037::WWW//DTD HTML//EN//2.0" "html.dtd">
%html;

<!-- Create model for data and header cells -->

<!ENTITY % table "P|%heading|%list" >

<!-- Tables -->

<!--
This DTD fragment defines the full ICADD Braille table model
altered to be, as far as possible, backward compatible
with the recent drafts of the late/former HTMLplus.

It is intended to be a superset of html-t1.dtd. The major
differences are in formatting: This DTD defines formatting
attributes to carry values that might otherwise have to be
calculated or established arbitrarily by a Web browser.
-->

<!ENTITY % vborder
"(VSINGLE|VDOUBLE|VTRIPLE|VDASH|VDOT|VBOLD|VBLANK|VNONE)"
-- useful for screen, Braille, print and large print. For YES|NO attributes
map VBLANK and VNONE to NO, all others to YES.-->
<!ENTITY % hborder
"(HSINGLE|HDOUBLE|HTRIPLE|HDASH|HDOT|HBOLD|HBLANK|HNONE)"
-- useful for screen, Braille, print and large print. For YES|NO attributes
map HBLANK and HNONE to NO, all others to YES.-->
<!ENTITY % valign "(top|middle|bottom)"
-- useful for screen, print and large print only -- >
<!ENTITY % halign "(left|both|center|right|char)"
-- useful for screen, print and large print -- >

<!ENTITY % tblunit "(percent|pixels|points|picas|mm|cm|inches)"
-- useful for screen, print and large print only -->

<!ENTITY % rprops
'rowsep %hborder; #IMPLIED
valign %valign; #IMPLIED' >
<!ENTITY % cprops
'colsep %vborder; #IMPLIED
halign %halign; #IMPLIED
alignchr CDATA #IMPLIED
charpos CDATA #IMPLIED' -- pixel position for align --
-- alignchar supports alignment on any character
(. or , or e for example);
charpos supports pixel position for alignment;
useful for screen, print and large print only -- >

<!-- TABLE is the top-level table element. CAPTION replaces H3, the
Braille heading level for a table title and is allowed either before
or after the table (or both). -->

<!ELEMENT TABLE - - (CAPTION?, NOTE?, TGROUP, CAPTION?)
-- CAPTION is allowed before or after table structures;
model is simplified to suggest both could be used. This
could be rewritten as an OR group. NOTE is where Braille
transcribers put contents of very long cells (kind of
reverse footnotes to avoid very wide cells) with
pointers to the actual cells. -->
<!ATTLIST TABLE
id ID #IMPLIED
border (border|noborder) border -- draw borders --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese --
tblwd CDATA #IMPLIED
tblht CDATA #IMPLIED
tblunits %tblunit; #IMPLIED
-- the dimensions will be meaningless for the Braille and
computer voice versions but may be useful for large print.
They cover the entire table unless values are assigned
on the TGROUP, THEAD, TBODY and TFOOT elements.
The TGROUP model allows TFOOT either before or after
the TBODY for multi-screen or multi-page tables whose footers need
to be available for the first portion during formatting. -- >

<!ELEMENT TGROUP O O (COLDEFS, THEAD?,
((TFOOT, TBODY+) | (TBODY+, TFOOT?))) >
<!ELEMENT THEAD - O (COLDEFS, HDROWS) >
<!ELEMENT TBODY O O (COLDEFS, ROWS) >
<!ELEMENT TFOOT O O (A?, FN)+ >
<!ATTLIST (TGROUP | THEAD | TBODY | TFOOT)
tblwd CDATA #IMPLIED
tblht CDATA #IMPLIED
tblunits %tblunit; #IMPLIED
-- the dimensions will be meaningless for the Braille and
computer voice versions but may be useful for large print
as well as screen and traditional print.
Values established for THEAD, TBODY and TFOOT, either in
attributes or within the COLDEF attributes, override
the comparable settings in TGROUP.
Start-tags are omissable where they can be inferred from
required lower-level elements. -- >

<!-- Table Column Definitions: -->
<!ELEMENT COLDEFS O O (COLDEF)* -- only exists to hold attributes -->
<!ATTLIST COLDEFS
-- default values to apply to all columns; may be overridden
at the column level. This list makes it easy for browsers to know
the default values and carry them. --
colsep %vborder; "vsingle"
halign %halign; "left"
alignchr CDATA #IMPLIED -- align on the
character given as a value in the attribute --
charpos CDATA #IMPLIED
-- pixel position for the alignment --
colwd CDATA #IMPLIED
-- default width for all cells in all columns --
tblunits %tblunit; #IMPLIED
-- default top border for all cells in row 1 --
topsep %hborder; "hsingle"
-- these attributes will be meaningless for the Braille and
computer voice versions but useful for screen, print, large print
with the potential exception of vertical borders in Braille. -->

<!-- there is exactly one COLDEF for each column in the table -->
<!ELEMENT COLDEF - O EMPTY -- only exists to hold attributes -->
<!ATTLIST COLDEF
%cprops; -- overrides default settings in COLDEFS --
colwd CDATA #IMPLIED
-- width for all cells in this column --
tblunits %tblunit; #IMPLIED
-- top border for cell in row 1 --
topsep %hborder; #IMPLIED -- overrides COLDEFS defn --
-- these attributes will be meaningless for the Braille and
computer voice versions but useful for screen, print, large print
with the potential exception of vertical borders in Braille. -->

<!-- Table Rows: -->
<!ELEMENT ROWS O O (TR)+
-- ROWS and HDROWS exist only to carry default
values for all rows and thereby make life
easier for browsers and editors. Individual
rows and hdrows (and cells) may override
these. -->
<!ELEMENT HDROWS O O (HDROW)+>
<!ATTLIST (ROWS|HDROWS)
-- rprops with default values to apply to all rows --
rowsep %hborder; "hsingle"
valign %valign; "top"
rowht CDATA #IMPLIED
-- default height of all rows --
tblunits %tblunit; #IMPLIED
leftsep %vborder "vsingle"
-- default left border for all cells in column 1 -->

<!-- Table Row Definitions: -->
<!ELEMENT HDROW - O (TH+) >
<!ELEMENT TR O O (TH?, THSUB*, TD+)
-- Use of TH and THSUB in TR has two major goals: Most
importantly, it facilitates the ability of braille and
computer voice software to determine the heads which
affect any individual cell in order to manipulate the
order in which they appear. Secondarily, they allow
for the possibility that the stub cells of a very wide
table may be fixed in position as a user scrolls to the right
or may be repeated on several pages in printing.
Using either TH and THSUB as the first cell in
a table row supports differentiation between, for example,
items and totals.
The model also allows sub-stub to be repeated in several
columns.
AXISNAME attribute appears on any stub-type cell, covering
the voice requirement for alternative text to be provided
if the cell content is too long to appear in the
voiced stub. It holds description for text-only displays.
-->

<!ATTLIST (TR | HDROW) -- replaces concept of row separator (TR) --
id ID #IMPLIED
%rprops; -- can override settings in ROWS or HDROWS --
rowht CDATA #IMPLIED
tblunits %tblunit; #IMPLIED
leftsep %vborder #IMPLIED
-- overrides setting in ROWS or HDROWS -- >

<!-- Table Cell Definitions: -->
<!ELEMENT TD - O (%table;)* -- a data cell -->
<!ELEMENT (TH|THSUB) - O (%table;)* -- col and row header cells -->

<!ATTLIST (TH|THSUB)
-- AXISNAME attribute appears on any column head cell and covers
the voice requirement for alternative text to be provided
if the cell content is too long to appear in the
voiced header. It functions like the alt attribute
elsewhere in HTML. --
ID ID #IMPLIED
%rprops; -- can override settings in row --
%cprops; -- can override settings in COLDEF --
-- cell positioning and spanning: (colstart and rowstart
are here only as a convenience for software that may need them) --
colstart NUMBER #IMPLIED
colspan NUMBER "1" -- span >= 1 --
rowstart NUMBER #IMPLIED
rowspan NUMBER "1" -- span >= 1 --
axisname NAME #IMPLIED
-- Identifying name for each axis may be stored here
for use in Braille or voice. Software will pick up
values from TH and THSUB cells and place them
into the TD cells which they affect. Where tables
are populated from databases, AXISNAME is the key to
the source of the row or column of data. In header
cells with succinct content, "axisname" may simply
be the content of the cell. Otherwise, a shortened
version. --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->

<!ATTLIST TD
ID ID #IMPLIED
%rprops; -- can override settings in row --
%cprops; -- can override settings in COLDEF --
-- cell positioning and spanning: (colstart and rowstart
are here only as a convenience for software that may need them) --
colstart NUMBER #IMPLIED
colspan NUMBER "1" -- span >= 1 --
rowstart NUMBER #IMPLIED
rowspan NUMBER "1" -- span >= 1 --
axes NAMES #IMPLIED
-- Each set of axis names may be stored here
for use in Braille or voice. Software will pick up
values from TH and THSUB cells and place them
into the TD cells which they affect. --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->

<!-- additional elements used in tables: -->

<!ELEMENT CAPTION - - (%text;)+ -- table or figure caption -->
<!ELEMENT FN - - (%text;)* -- footnote -->
<!ELEMENT NOTE - - (P*) -- admonishment -->

<!-- end of DTD -->