Neal said:
Having neither a talking browser nor the expertise in accessibility, I'd
sure like to see live examples of table layouts which screw up
accessibility for the talkies, and an explanation of why...
The most important objection against using tables for layout is that
they usually wreck content linearization. If you want a demonstration of
this then it's best to download an aural renderer. It's the best way to
get a feel for how linear one dimensional access to content differs from
2 dimensional visual access.
In some cases content linearization issues caused by using tables for
layout can be solved without having to ditch the layout tables. This is
typically done by using multiple tables, for example one table holds the
top navbar, another table holds a left side bar, yet another table holds
the content.
The statement I challenged was that there were no accessibility issues
with using tables for layout apart from content linearization.
Chunks of content like list items cannot be interpreted correctly unless
we mark them up as such. A UA is then able to display them in a
recognizable manner for visual access, or aurally announce the
structure. The way to do this for an aural renderer would be to speak
something like:
LIST
item 1
item 2
END LIST
It's no different for tabular content, users who access the content
aurally need to know before tabular content is read out that what is
about to follow *is* tabular data, thus an aural render *should* do
something like this:
TABLE
ROW 1
data
data
ROW 2
data
data
END TABLE
Doing this results in problems since a UA cannot possibly distinguish a
table used for layout from a table used to hold genuine tabular data.
That leaves 2 choices for the aural renderer:
1) Don't announce structural table elements.
2) Announce all structural table elements.
(1) Prevents aural users from being informed about, and interact with
tabular content (e.g. navigate table rows). (2) Confuses aural users by
announcing tables used for layout as tabular data.
A kludge for aural renderers that announce structural table elements is
to add something that may be rendered aurally by a UA that announces a
table used for layout by speaking something like "table used for
layout". This alerts aural users, but it doesn't prevent the pointless
reading out of the structural table elements of the tables used for
layout.
The current crop of aural UAs are really poor, not least because most of
them are speech agents tacked onto renderers like IE with deficient
support for css media rules. The popular IBM Home Page Reader (HPR) is
such an example.
Certain current aural UAs don't announce structural table elements at
all, nor do they provide table navigation. This has lead to the notion
amongst some that it therefore doesn't matter if tables are used for
layout, as long as the content linearizes. This is foolish, it presumes
that aural renderers will always be as poor as they are currently.
Content authors should mark up content so that it can be identified
correctly. Using tables for layout prevents that.