Print

Print


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