Warning:
This wiki has been archived and is now read-only.

TableAccessibility

From HTML WG Wiki
Jump to: navigation, search


Support for scope and headers attributes in assistive technologies

Simple Test Materials

Aurélien Lévy's test cases for scope and headers support in assistive technologies.

Gregory J. Rosmaita has mounted a test of a TABLE Using id/headers and axis, adapted from CSS2, Section 17: Tables. A similar test page using scope, rather than the id/headers binding, is under construction.

For a raw "complex" table, try Merriam-Webster's Table of Indo-European languages.

A collection of Accessible version of tables and charts at the U.S. Federal Reserve, the originals of which are contained in a PDF document named: "An Analysis of the Potential Competitive Impacts of Basel II Capital Standards on U.S. [word deleted by wiki] Rates and [word deleted by wiki] Securitization", is also a very useful resource/test suite. (Thanks to Jim Allan, chair of the User Agent Accessibility Guidelines Working Group for pointing out this resource.)

Complex Test Materials

  • this currently is a placeholder for copy to be added later; there has been feedback from the accessibility community that the test materials in the section immediately preceding this section are too</b> simple. i am currently chasing down some truly complex tables that i have been pointed to by TV Raman.

JAWS For Windows

JAWS For Windows

JAWS (Job Access With Speech) is the most widely used screen reader for Windows. There is no support for either headers or scope in JAWS version 4, JAWS introduced support for the scope attribute (values: col, row, rowgroup, colgroup) in version 6.0 (JAWS 6.0 release notes). The latest version is 8. Many users, however, still use versions 7, 6, 5, or even 4.51, with version 7 being currently the most common release in use.

The reason why so many different releases of JAWS are in use by significant segments of the targetted user population is directly correlated to the equipment the end user has at his or her disposal; JAWS users who still use Windows95, Windows98SE, WinNT and WinMe <b>cannot</b> use JAWS 8.0, or later, releases. Windows 98 and Windows ME users are advised by the developer to use JAWS version 7.X or earlier. If one is still running Windows NT or Windows 95, one is limited to JAWS version 6.20 or earlier. Even a large portion of JAWS "power users" who are technologically capable of using version 8.x are, instead, using the last version 7 release, 7.10.500, because -- under most circumstances -- it is far more stable than version 8. Another factor in the variety of releases in use is simple economics: in the United States, for example, only 30 percent of those classified as legally blind, and of working age (18 to 69 years old), are employed, making it difficult -- if not impossible -- for large numbers of users to upgrade their hardware, so as to accomodate the use of later, more advanced, versions. Moreover, in order to keep one's JAWS release updated, one must not only initially purchase the program, but also a software maintenance agreement (SMA), in order to be eligible for future releases.

According to Freedom Scientific's Surf's Up: Tables with Jaws tutorial, JAWS makes use of (at least) the scope, colspan, and axis attributes when determining relationships between cells. Because of the somewhat vague language used in JAWS documentation, this does not exclude possible support of headers.

JAWS For Windows Testing

Support for id/headers (JAWS 6.20)

Tested using JAWS 6.2, IE 7 , Windows XP Interrogated cell 25 of the "simply complex table" [test cases] examples using the JAWS command : "To hear information about the current table cell, press ALT+CTRL+NUM PAD 5. JAWS announces the row and column position, reads the current row and column headers, and reads the contents of the cell. "

<b>Results:

1. table with th only: announces "column 6, row 6, E, 5, cell 25"

2. table with th and scope: announces "column 6, row 6, E, 5, cell 25"

3. table with th and id/headers: announces "column 6, row 6, J, E, 5, 10, cell 25"

Indicates that in this case, JAWS is using the id/headers.

NOTE: In case 3 JAWS announces the headers in the order above regardless of the order they are placed: example headers="hj h5 h10 he" headers="hj he h5 h10"

are announced "column 6, row 6, J, E, 5, 10, cell 25"

Results of Tests Using JAWS 7.10

Materials Tested: Aurélien Lévy's test cases for scope and headers support in assistive technologies.

Software Used: JAWS 7.10.500, IE7 (SP2) and Windows XP Professional (SP2)

Results

  1. using JAWS7's "list all tables in document" command reports the presence of 16 tables, beginning with first table with a real summary (the third example);
  2. using JAWS7's go-to-first table command (T), JAWS7 skipped the first 2 tables and moved focus to the third table (the first with a genuine summary);
  3. when attempting to inspect/navigate the first 2 sample tables, JAWS7 merely repeats "not in table", and, consequently none of the table navigation or query hotkeys work;
  4. the first table i was able to traverse with JAWS7 is the third table, "table with summary"; the summary was read in full, and when navigating the second row cell by cell, the time contained in each cell was preceded by the corresponding TD value set for the first row; (State & First 4 o'clock column 1, State & Sixth 4:05 column 2; State & Fifteenth 4:11 column 3, Fifteenth & Morrison 4:19 column 4)
  5. JAWS7 reacted to the "table with just th" identically to the "table with summary"; when traversing the table's second row cell by cell, one hears the contents of the TH prior to the contents of the second row cell (State & First 4 o'clock column 1, State & Sixth 4:05 column 2; State & Fifteenth 4:11 column 3, Fifteenth & Morrison 4:19 column 4)
  6. "table with just th vertical order" was only</b> read correctly when the JAWS7 command for read-by-row is invoked; when the ALT+CTR+NUM5 keystroke is used on a single cell, it not only reads the content of the cell being queried, but also speaks the contents of the preceding th before reading the contents of the actual cell with focus (for example, in column 1, row 2, querying JAWS7 results in the following: "column 1, row 2, State & First State & Sixth"
  7. "table with th and scope" was read correctly when horizontally traversing the second row; (State & First 4:00 column 1, State & Sixth 4:05 column 2, etc.)
  8. i was able to read the "table with th and scope vertical order" <b>only</b> by issuing JAWS7's read row command (WinKey+Period) and then moving manually, row-by-row, down the table using the WinKey+DownArrow read next row command; this was the means by which i could get JAWS to speak the content of the TH, followed by the time;
  9. "table with th and headers/id" was comprehensible <b>only</b> when using JAWS7 to move cell-by-cell through the second row;
10. "table with th and headers/id vertical order": reading the <b>first column row-by-row (WinKey+DownArrow) JAWS7 correctly associated each cell's header value with the corresponding id value; navigating to each cell in the second column caused the proper id value to be spoken before the corresponding cell;
11. "table with th, scope, both reading order": JAWS7 appended the correct th value with scope="col" when reading a row cell-by-cell; although every one of the th with scope="col" was read before the value of the cell, the scope="row" information was not</b> conveyed via JAWS7; when a single cell was queried (using ALT+CTRL+5) the appropriate scope="row" was announced thus: "column 5, row 4, City, Gordon Greenidge, Houston";
12. "table with th, headers/id, both reading order": same result as with previous table: JAWS7 appended the correct th value with scope="col" when reading a row cell-by-cell; although every one of the th with scope="col" was read before the value of the cell, the scope="row" information was <b>not</b> conveyed via JAWS7; when a single cell was queried (using ALT+CTRL+5) the appropriate scope="row" was announced: "column 5, row 2, City, Joel Garner, Pittsburgh";
13. "complex table with th and headers/id": when using the read-cell-by-cell command and traversing the third row, the entire contents of the table were available via JAWS7; "column 1 row 3 Homework 15% Exams 1 15%, Exams 2 15%, Exams Final 20%, Projects 1 10%; Projects 2 10%, Projects Final 15%"
14. "complex table with th and scope": when using the read-cell-by-cell command and traversing the third row, the entire contents of the table were available via JAWS7; "column 1 row 3 Homework 15% Exams 1 15%, Exams 2 15%, Exams Final 20%, Projects 1 10%; Projects 2 10%, Projects Final 15%"
15. "complex table with th and headers/id and scope": when using the read-cell-by-cell command and traversing the third row, the entire contents of the table were available via JAWS7; "column 1 row 3 Homework 15% Exams 1 15%, Exams 2 15%, Exams Final 20%, Projects 1 10%; Projects 2 10%, Projects Final 15%"
16. "complex table with th and headers/id (juicystudio exemple [sic]): excellent orientational summary follows caption when first enter table; reading rows cell by cell one hears only the letter and the cell value spoken (E cell five column 6), but when the cell is queried using CONTROL+ALT+NumPad5, one hears: "Column 6 Row 2 E 6 Cell 5"
17. "complex table with th and scope (juicystudio exemple [sic]): excellent orientational summary precedes caption when table reached; when navigate from cell to cell, only the top row of headers are spoken before the cell's content ("B Cell 12 column 3"); when individual cell is queried, result is: "column 6 row 4 E 3 8 Cell 15"

<b>Note: item 17

It is important to note when reading the version of the "simply complex" table with th/scope JAWS incorrectly associated the header "3" with cell 15.

As from the id/headers "simply complex" table the headers for cell 15 are only "E' and "8".

Results of Tests Using JAWS 8

Materials Tested: Aurélien Lévy's test cases for scope and headers support in assistive technologies.

Software Used: JAWS 8.0.2107, IE7 (SP2) and Windows XP Professional (SP2)

Results

  1. using JAWS8' "list all tables in document" command reports the presence of 16 tables, beginning with the first table with a real summary (that is, the third example);
  2. using JAWS8' go-to-first table command (T), JAWS8 skipped the first 2 tables and moved focus to the third table (the first with a genuine summary);
  3. when attempting to inspect/navigate the first 2 sample tables, JAWS8 merely repeats "not in table", and, consequently none of the table navigation or query hotkeys work;
  4. the first table i was able to traverse with JAWS8 is the third table, "table with summary"; the excellent summary was read in full, and when navigating the second row cell by cell, the time contained in each cell was preceded by the corresponding TD value set for the first row; (State & First 4 o'clock column 1, State & Sixth 4:05 column 2; State & Fifteenth 4:11 column 3, Fifteenth & Morrison 4:19 column 4)
  5. JAWS8 reacted to the "table with just th" identically to the "table with summary"; when traversing the table's second row cell by cell, one hears the contents of the TH prior to the contents of the second row cell (State & First 4 o'clock column 1, State & Sixth 4:05 column 2; State & Fifteenth 4:11 column 3, Fifteenth & Morrison 4:19 column 4); note, however, that without a summary, it takes longer to figure out how to best read the table-ized information
  6. "table with just th vertical order" was only</b> read correctly when the JAWS8 command for read-by-row is invoked; when the ALT+CTR+NUM5 keystroke is used on a single cell, it reads the content of the cell being queried correctly, unlike JAWS7: ("column 1, row 1, State & First");
  7. "table with th and scope" was read correctly <b>only</b> when horizontally traversing the second row; (State & First 4:00 column 1, State & Sixth 4:05 column 2, etc.)
  8. i was able to read the "table with th and scope vertical order" <b>only</b> by issuing JAWS8' read row command (WinKey+Period) and then moving manually, row-by-row, down the table using the WinKey+DownArrow read next row command; this was the means by which i could get JAWS8 to speak the content of the TH, followed by the time;
  9. "table with th and headers/id" was comprehensible <b>only</b> when using JAWS8 to move cell-by-cell through the second row; unlike JAWS7, JAWS8 did not provide column and row information as it usually does;
10. "table with th and headers/id vertical order": reading the <b>first column row-by-row (WinKey+DownArrow) JAWS8 correctly associated each cell's header value with the corresponding id value; navigating to each cell in the second column caused the proper id value to be spoken before the corresponding cell; unlike JAWS7, JAWS8 did not provide column and row information;
11. "table with th, scope, both reading order": JAWS8 appended the correct th value with scope="col" when reading a row cell-by-cell; although every one of the th with scope="col" was read before the value of the cell, the scope="row" information was not</b> conveyed via JAWS8; when a single cell was queried (using ALT+CTRL+5) the appropriate scope="row" was announced thus: "column 5, row 2, City, Joel Garner, Pittsburgh";
12. "table with th, headers/id, both reading order": same result as with previous table: JAWS8 appended the correct th value with scope="col" when reading a row cell-by-cell; although every one of the th with scope="col" was read before the value of the cell, the scope="row" information was <b>not</b> conveyed via JAWS8; when a single cell was queried (using ALT+CTRL+5) the appropriate scope="row" was announced: "column 2, row 3, Age, Clive Lloyd, 21";
13. "complex table with th and headers/id": when using the read-cell-by-cell command to traverse the third row, the entire contents of the table were available via JAWS8; "column 1 row 3 Homework 15% Exams 1 15%, Exams 2 15%, Exams Final 20%, Projects 1 10%; Projects 2 10%, Projects Final 15%"; this table, however, would benefit greatly from a precise summary, as one does not reach the data being presented until the third row;
14. "complex table with th and scope": when using the read-cell-by-cell command to traverse the third row, the entire contents of the table were available via JAWS8; "column 1 row 3 Homework 15% Exams 1 15%, Exams 2 15%, Exams Final 20%, Projects 1 10%; Projects 2 10%, Projects Final 15%"; as with the previous example, this table, however, would benefit greatly from a precise summary, as one does not reach the data being presented until the third row;
15. "complex table with th and headers/id and scope": when using the read-cell-by-cell command to traverse the third row, the entire contents of the table were available via JAWS8; "column 1 row 3 Homework 15% Exams 1 15%, Exams 2 15%, Exams Final 20%, Projects 1 10%; Projects 2 10%, Projects Final 15%"
16. "complex table with th and headers/id (juicystudio exemple [sic]): excellent orientational summary follows caption when JAWS8 first enters table; reading rows cell by cell one hears only the letter and the cell value spoken (E cell five column 6), but when the cell is queried using CONTROL+ALT+NumPad5, one hears: "Column 6 Row 2 E 6 Cell 5"; note that the flanking numerical cells (those in columns 1 and 7), however, are included in the move-to-next-cell / move-to-previous-cell navigation mechanism;
17. "complex table with th and scope (juicystudio exemple [sic]): excellent orientational summary precedes caption when table reached; when navigate from cell to cell, only the top row of headers are spoken before the cell's content ("B Cell 12 column 3"); when individual cell is queried, result is: "column 6 row 4 E 3 8 Cell 15"; note that the flanking numerical cells (those in columns 1 and 7), however, are included in the move-to-next-cell / move-to-previous-cell navigation mechanism;

<b>Note on JAWS8 Stability:</b>

During the time it took to test the 18 tables on Aurélien Lévy's test cases for scope and headers support in assistive technologies, JAWS8 crashed thrice, caused 9 IE7 crashes, and rebooted my laptop without warning 4 times -- a not uncommon representation of JAWS8's instability.

FireVox

FireVox: A Self-Voicing Extention for FireFox

FireVox supports the headers attribute. For more information on FireVox and forms, please consult the FireVox tutorial/test page: Working With Forms

table with vertical order didn't work well by default, it gives the vertical association even if there is only th in raw and no th in vertical order for the column of the current td Expected behavior: give the horizontal association by default instead of the vertical one when there is only th in the 1st column and horizontal association Actual behavior: it work well with the query for more information (who in this case is more query for the good information ;) )

complex table exemple didn't work at all for exams or projects even with the query for more information it doesn't give the headers association with homework, for 1,2 or final it doesn't give the association with exams or projects, for the td content it give just the first association when there is a multi th association. Expected behavior: association between th with headers/id, scope or just th, association between td and multi th with headers/id, scope or just th Actual behavior: no association between th, give just the first association when there is a multi th association

The complex example of juicystudio is broken too for example the cell 8 who actually have an explicit association with headers to cell C and cell 7 is read like cell C and cell 2

I have contacted the author of Firevox who actually have sent me an update to correct the test case when there is headers and id so we can expect a new release who work well soon. For the scope support or just th support for the complex table case, he will work on it.

EDIT : the new version who work correcty with headers/id is available at http://www.firevox.clcworld.net/downloads.html

HAL

HAL

Linux Screen Reader (LSR)

Linux Screen Reader (LSR)

NVDA

NVDA: An Open Source Screen Reader for Windows

Orca

Orca

Window-Eyes

Window-Eyes

The second most-popular screen reader for the Windows platform. According to a direct conversation with GWMicro, Window-Eyes does <b>not use scope, only</b> headers/id

Support for id/headers (Window Eyes 6.0)

Tested using Window Eyes 6.0, IE 7 , Windows XP naviagted to cell 25 of the "simply complex table" [test cases] examples using the the table navigation command INS+ ARROW with

"Reading Cell Headers" settings

"Attribute Only - If a web page author has designated certain cells to act as column and row headers, Window-Eyes will use those cells for column and row header announcement." and

"Column and Row - This would always read both the column and row. If they are changing rows than the row header will be read first followed by the column header. If they are changing columns then the column header will be read first followed by the row header. "

<b>Results:

1. table with th only: announces "E, 5, cell 25"

2. table with th and scope: announces "E, 5, cell 25"

3. table with th and id/headers: announces "J, E, 5, 10, cell 25"

Indicates that in this case, Window Eyes is using the id/headers.

VoiceOver

VoiceOver Built-in screen reader in Mac OS X. No support for either headers or scope in any version.

References