Page is a not externally linkable
DrDoc - 9:49 pm on Sep 27, 2006 (gmt 0)
Overview With the exception of a few newcomers, we have all heard the sometimes heated debate over "table based vs. tableless layouts." For those of us who are a little bit older (measured in web years, which includes yours truly), we all "grew up" during a time when Cascading Style Sheets (CSS) was unheard of. In fact, even tables were unheard of at the time. The websites of the day looked like a Word document, at best. The flexibility was, well, non-existant. While the purpose of this post is not to rehash the "table based vs. tableless layouts" argument (that is for another forum and another day, despite being discussed to death numerous times already) it is important to understand the background of table usage in order to fully understand tables. March 1995 marked the first initial draft [w3.org] of what was scheduled to be the World Wide Web Consortium (W3C) HTML 3.0 specification. Part of the work which went into this new specification was the HTML3 Table Model [w3.org]. Tables first became part of the W3C standard as part of HTML 3.2 [w3.org] in 1997 (Jan 14). The HTML 3.2 standard provided a big leap forward in many aspects. CSS support was at this time, well, not quite as bad as the flexibility of old; but pretty close. Despite the quite noble process which went into developing CSS -- a descriptive layout layer which would take the web to a level not even dreamed of -- the browsers of the day did, if we were lucky, support a few color properties here and there. Quite naturally everyone began using tables to control their layout. And understandably so. Tables were the only HTML elements which had any form of structure to them, allowing us to control much of the site layout in what seemed endless possibilities. Templates and design sites began popping up. The web matured, and we started seeing both creativity and individuality in both design and layout. And so it continued, despite the advent of CSS 1 [w3.org] already in 1996 (Dec 17). I still remember churning out table based layouts, including a stylesheet which controlled but one thing -- anchor tag coloration in its various states. It is difficult to teach an old dog new tricks, so the table based layouts continued -- in fact, flourished -- on the web. And they still live on today in significant numbers, even among brand new and big name websites. Tables, as an HTML element, were defined to fulfill a specific purpose. They exist, then and now, to arrange data into rows and columns of cells. Tabular data can take many shapes, most of which we see every day around us: spreadsheets, bus and train timetables, sports scores, TV schedules, etc. They all have one thing in common -- data logically organized into rows and columns of cells. Each row and column follow a specific pattern, a pattern which may vary depending on the table in question, but which is consistent throughout the table itself. Based on the initial draft for the HTML3 Table Model [w3.org], the objective was quite ambitious, but also well thought through. Quite the impressive reading: ... Tables start with an optional caption followed by one or more rows. Each row is formed by one or more cells, which are differentiated into header and data cells. Cells can be merged across rows and columns, and include attributes assisting rendering to speech and braille, or for exporting table data into databases. The model provides limited support for control over appearence, for example horizontal and vertical alignment of cell contents, border styles and cell margins. You can further affect this by grouping rows and columns together. Tables can contain a wide range of content, such as headers, lists, paragraphs, forms, figures, preformatted text and even nested tables. ... For the visually impaired, HTML offers the hope of setting to rights the damage caused by the adoption of windows based graphical user interfaces. The HTML table model includes attributes for labeling each cell, to support high quality text to speech conversion. The same attributes can also be used to support automated import and export of table data to databases or spreadsheets. (Emphasis added) Impressive, right? Especially from a usability perspective! And this is still 1995 and 1996 we are talking; the very beginning of tables as we know them. Over time the HTML Table Model evolved and improved slightly to what we know as tables according to the HTML 4.01 specification [w3.org] in 1999 (Dec 24). Although tables can be discussed from a number of standpoints, and as basis for several different topics, I will focus specifically on tables as related to usability. We will look at all aspects of tables, including the many supportive subelements which comprise the markup of any given table. I will also discuss the unfortunate lack of browser support for something as fundamental as tables (yes, you read me right -- tables are actually not very well supported; unique to HTML elements in today's browsers). More than anything, I will explain simple basics for making use of the tools and options available to us; especially as it pertains to marking up accessible tables, regardless of complexity. Please note that I will discuss HTML markup only. XHTML and XML differences or elements are a different topic and will not be considered or used for comparison. Our focus begins with the table structure itself.
Accessible Tables
Introduction
This specification extends HTML to support tables. The table model has grown out of early work on HTML+ and the initial draft of HTML3. The earlier model has been been extended in response to requests from information providers for improved control over the presentation of tabular information:
e.g. aligning a column of numbers on the decimal point
better support for breaking tables across pages for printing