css tables model

I had some thought about <http://ln.hixie.ch/?start=1070385285&count=1>, 
and I was wondering if there is any specific reason why inheritance 
should always be element based in css. I can think of a number of 
different ways of specifying tables in XML, and none would provide any 
reasonable element-based inheritance model. Take the following for example:

ASCII table:
+--+--+--+
|     |  |
+--+--+--+
|  |     |
+  +  +  +
|  |     |
+--+--+--+

Regular HTML way:
<table>
   <tablecolumngroup>
     <tablecolumn/>
     <tablecolumn/>
     <tablecolumn/>
   </tablecolumngroup>
   <tablerowgroup>
     <tablerow>
       <tablecell colspan="2"/>
       <tablecell/>
     </tablerow>
     <tablerow>
        <tablecell rowspan="2"/>
        <tablecsll colspan="2" rowspan="2"/>
     </tablerow>
     <tablerow/>
   </tablerowgroup>
</table>

Inverted HTML way:
<table>
   <tablerowgroup>
     <tablerow/>
     <tablerow/>
     <tablerow/>
   </tablerowgroup>
   <tablecolumngroup>
     <tablecolumn>
       <tablecell colspan="2"/>
       <tablecell rowspan="2"/>
     </tablecolumn>
     <tablecolumn>
        <tablecsll colspan="2" rowspan="2"/>
     </tablecolumn>
     <tablecolumn>
        <tablecell/>
     </tablecolumn>
   </tablecolumngroup>
</table>

Grid-based way:
<table>
   <tablerowgroup>
     <tablerow/>
     <tablerow/>
     <tablerow/>
   </tablerowgroup>
   <tablecolumngroup>
     <tablecolumn/>
     <tablecolumn/>
     <tablecolumn/>
   </tablecolumngroup>
   <tablecell colstart="1" rowstart="1" colend="2" rowend="1"/>
   <tablecell colstart="3" rowstart="1" colend="3" rowend="1"/>
   <tablecell colstart="2" rowstart="2" colend="3" rowend="3"/>
   <tablecell colstart="1" rowstart="2" colend="1" rowend="3"/>
</table>


Now, how would one give those all a style so that they inherit in the 
same way, dependent on their table placement rather than their parent 
and ancestor elements?

I'd suggest making inheritance for tables based not on element nesting, 
but instead specified by a css property, something like this:

property table-inheritance
     values: none | [ table-row || table-column || table-row-group || 
table-column-group || table ]
     initial: table-row table-row-group table-column table-column-group 
table
     applies to: ÔÇÿtable-cellÔÇÿ elements
     inherited: no
     percentages: N/A
     media: visual
     computed value: as specified

where 'table' is the closest table ancestor, including 'inline-table', 
and 'table-row-group' includes 'table-header-group' and 
'table-footer-group'.

Is this something that can be done without breaking any CSS design 
constraints?
-- 
David "liorean" Andersson

ViewStyles, ViewScripts, SwitchStyles and GraphicsInfo bookmarklets:
<http://liorean.web-graphics.com/>
Hangouts:
<http://codingforums.com/> <http://yourmusicforums.com/>

Received on Friday, 12 March 2004 06:10:07 UTC