Proposed HTML/ICADD Table Model Level Two

yuri@sq.com (Yuri Rubinsky)
Date: Mon, 3 Oct 94 23:26:37 EDT
Message-id: <m0qs0UG-000ESLC@sq.com>
Reply-To: yuri@sq.com
Originator: html-wg@oclc.org
Sender: html-wg@oclc.org
Precedence: bulk
From: yuri@sq.com (Yuri Rubinsky)
To: Multiple recipients of list <html-wg@oclc.org>
Subject: Proposed HTML/ICADD Table Model Level Two
X-Listprocessor-Version: 6.0c -- ListProcessor by Anastasios Kotsikonas
X-Comment: HTML Working Group (Private)

<!--	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  -->