Hi,
I have just added JAWS to my testing suite. Not to replace testing with
real end-users, but just to have a mechanism for testing pages with a
screen reader. The first thing I was eager to test with it was the
standard way we mark up data tables here. From reading the advice online I
came up with a demanding piece of best practice advice. From my testing
using JAWS it looks to have been all in vain. It looks like JAWS was built
on the assumption that web page code will be (insert expletive)
non-compliant. The never ending circle plagueing the W3C's work... with
chinks of light when an app developer says 'lets do both/and'.
I wonder if there are any users out there who know how to change the user
preferences in JAWS to read out table AXIS, HEADERS, and ID properties, or
whether JAWS cannot do this. (The user context help within the application
talks about table headers as those of the rendered HTML page; physical
headers instead of the HEADERS property.)
Here's my current best practice:
Say you had this table (assume there are more rows and columns than this):
Time | Thursday
-----------------------------------------------------------
15:00 | Scanning electron microscopy
In the column and row headers you might have:
<th id="time" axis="time">Time</th>
<th id="thurs" axis="day">Thursday</th>
In the rows you might have:
<th headers="time" id="three" axis="time">15:00</th>
<td headers="thurs three"><strong><a href="tscode">Scanning electron
microscopy</a></strong></td>
Doing all this extra coding, it makes sense on the surface that it would
be helpful to screen readers. 'Thursday, three o'clock, scanning electron
microscopy' is what you are aiming for, instead of 'time thursday new line
three o clock scanning electron microscopy', or something worse like 'new
line blank blank blank three o clock scanning electron microscopy'.
This practice is based on the following:
WCAG 1.0 section 5.2:
For data tables that have two or more logical levels of row or column
headers, use markup to associate data cells and header cells. [Priority 1]
For example, in HTML, use THEAD, TFOOT, and TBODY to group rows, COL and
COLGROUP to group columns, and the "axis", "scope", and "headers"
attributes, to describe more complex relationships among data.
Doing this for the benefit of screen readers seems to be supported by some
others out there. For example see
http://www.mcu.org.uk/articles/tables.html (go to 'ID and Headers') "By
giving each table heading a unique label (using the 'id' attribute) - and
then associating each of the data cells with that label, using the
'header' attribute, new Web browsers can give appropriate feedback for
those using assistive technologies."
Does anyone know what those 'new Web browsers' are? I admit I was using a
PC with IE in the testing, not Firefox, because I don't have admin rights
to install...common desktop...usually use a Mac so don't care....but JAWS
is only on PC...yada yada.
WebAim (http://www.webaim.org/techniques/tables/2#id) suggests that just
using 'scope' is fine for tables with one or two axes, but for any complex
tables, ID and HEADERS should be used.
That would certainly be simpler. SCOPE is easy to deploy. For ID and
HEADERS you have to put something unique for every cell.
Given that I've not been able to find a way for JAWS (one of the more
popular screen readers) to make use of any of this extra (ID and HEADERS)
information, is it worth doing, or is it following W3C's ideals and nobody
else's practice?
Many thanks,
______________________________
Trevor Barton
Web Officer
University of Oxford
University Offices, Wellington Square, Oxford, OX1 2JD, UK
T: +44 (0)1865 280546
F: +44 (0)1865 280522
www.ox.ac.uk
|