Document Body Page Navigation Panel
This was produced from the pdf file linked from http://www.vorburger.ch/projects/alt/, using Adobe's PDF to HTML converter. Page 1 was edited by hand to fix problems with the conversion.
PROJECT SUPERVISOR
Afzal Ballim, MEDIA -LITH-DI-EPFL
1 Page 2
3
ALTIFIER -WEB ACCESSIBILITY ENHANCEMENT TOOL Michael Vorburger
2
ABSTRACT
The goal of this project (« ALTifier Web Accessibility Enhancement
Tool») was to research and im-plement
tools to generate textual alternatives such as the ALT attribute in IMG and
other graphical
HTML elements.
Often image and some other HTML tags lack a textual alternative. This
makes them inaccessible to
screen readers, non-visual/ text-only browsers and braille readers. Adding
alternate descriptions can
make such pages more accessible.
On one hand, the project focuses on HTML authors with an "author mode"
tool to set ALT texts on a
site-wide per-image basis, instead per each occurrence in HTML documents.
The idea of this tool is moti-vate
HTML authors to set ALT on all images by facilitating this job.
On the other hand, for users surfing on existing sites with lack of ALT,
a "user mode" tool tries to
guess ALT text by heuristics. This tool is a proxy server which filters/
transforms HTML and reads pages
from the original Web server, inserts ALT, and sends them on to the Web client.
The heuristics used to guess alternate text range from looking at an image's
height & width, following
links to extract a description from a document title, apply OCR to find text
on buttons, to some simple
natural language recognition.
The project report gives a detailed description of the implementation
and explains design choices.
keywords: ALT, IMG, HTML, C++, Filtering, W3C, WAI, Web,
Accessibility, Braille, Screen Reader,
Proxy, HTML Tool, Blind or Visually Impaired People, User Interface
Transformation 2
2 Page 3
4
ALTIFIER -WEB ACCESSIBILITY ENHANCEMENT TOOL Michael Vorburger
3
CONTENTS
1 Specification and Requirements 4
1.1
Introduction......................................................................................
4
1.2 Image classes
.................................................................................
4
1.3 Three Front Ends and One Back End / Platform / Modules............. 5
1.4 HTML Tags to ALTify (Lexical Analyzer Back-End).........................
7
1.5 ALT Heuristics (Heuristics
Back-End).............................................. 9
2 User Manual 13
2.1 Using the Interactive Windows GUI for Web Authors ....................
13
2.2 Using the UNIX CLI Commands for Web Authors .........................
13
2.3 Using the Proxy Server for Web Surfers (UNIX Daemon) ............. 13
3 Discussion 14
3.1 Comparisons (TOM, A-Prompt, Bobby) .........................................
14
4 Acknowledgements 15
5 References 16
6 Appendix 17
6.1 Background On Web
Accessibility................................................. 17
6.2 Some source
code.........................................................................
18 3
3 Page 4
5
ALTIFIER -WEB ACCESSIBILITY ENHANCEMENT TOOL Michael Vorburger
4
1 SPECIFICATION AND REQUIREMENTS
1.1 INTRODUCTION
This chapter shows the specifications and design choices underlying the project.
This has been written
before the first line of code was programmed, and only slightly adapted during
the actual implementation.
After presenting the fundamental idea of "image classes", a brief introduction
to the application's gen-eral
structure is presented. Following is a detailed description of the heuristics
used to find alternate tex-tual
representation, and how various HTML tags are affected.
1.2 IMAGE CLASSES
Several "image classes" appear in HTML documents and can be distinguished
based on the following
criteria. These classes influence the choice of ALT text:
¨ Illustrations are images carrying information and graphically
explain or interpret some in-formation
maybe contained in the surrounding text already. They are usually "big" and
should have a meaningful ALT and ideally LONGDESC. In theory, ALT for these
images
could sometimes be identified by looking at the textual context, meaning
the preceding
and following paragraphs, applying some natural language recognition. (Publicity
banners
probably fall into the illustrations category as well, because they technically
do contain in-formation,
even though sometimes of debatable value.)
¨ Navigation aid images are graphical buttons and similar images,
often appearing inside a
link or image map. A short ALT for an image of this class can be found by
looking at the
link target. Chances are high that OCR recognition succeeds for this kind
of image.
¨ Presentation and Decoration: This images are used to make a
page "look nice", but they
usually don't contain any informational value. Some well known presentational
images are
graphical rulers and bullets, substituting UL/ LI and HR.
Images in this "well-known class"
have standard and constant ALT, such as '*) ' and '-----' or similar. Another
simple ex-ample
are transparent 1x1 GIF images often used by professional web designers for
layout
purposes. They represent another "well-known class" with ALT="". (Such
transparent
GIFs can be recognized either by it's minimal file size, often 34-43 bytes
only, or by it's
minimal image size, often 1 pixel only height or width.)
Note that a class such as "icons & symbols" does not fall into
this categorization, as an icon could be
anything from illustrational to navigational to presentational, depending
on it's usage. Note also that a
thumbnail image of the form <a href=" bigpict. jpg"><
img src=" minipict. gif"></ a>
will usually belong into the category illustrations, not navigation,
even though contained in a link. 4
4 Page 5
6
ALTIFIER -WEB ACCESSIBILITY ENHANCEMENT TOOL Michael Vorburger
5
1.3 APPLICATIONS STRUCTURE AND OVERALL ARCHITECTURE
1.3.1 General Structure
A core engine (back-end) with the general functionality (scanning, writting,
guessing) is accessed
from several back-ends. The back-end provides a very simple C calling interface.
Three front-ends will be
built around that core engine:
¨ HTTP proxy server 1 setting ALT without human intervention. This is
called "user mode".
¨ UNIX command-line tools to set/ retrieve ALT for an entire site, then
edit them manually.
¨ Interactive site-wide Windows GUI. This and the above tool are in
"author-mode".
Both "author-mode" modules (Win GUI and UNIX CLI) have a "Suggest" function
which invokes the
guess-function used in "user mode" for the proxy server. Both "author-mode"
modules store the descrip-tions
in a simple site-wide ALT database. This "database" is a text file with mapping
IMG-SRC to ALT.
This is a sample of how the Win GUI front-end interface:
[Dialog box showing list if paths to images, with item
"images/esperanto-flago.gif" highlighted. Rest of box shows an image
of a flag and text box labeled ALT containing "ESPERANTO - La Internacia
Lingvo".
Another text box shows
"type=IMG, Width=52, Height = 36. Appears in Document: index.html,
kissfp/index.html"]
Image 1: The main window interface (GUI) for ALTifier in "author mode"
1 What's a Proxy Server? See: http:// webopedia. internet. com/ TERM/
p/ proxy_ server. html 5
5 Page 6
7
ALTIFIER -WEB ACCESSIBILITY ENHANCEMENT TOOL Michael Vorburger
6
1.3.2 Platform & Environment
The original version was developed under MS Windows using Visual C++
5.0 and
UNIX (LINUX) gcc, because these systems were available and the author had
prior us-age
experience.
The back-end code is completely platform neutral C/ C++. The proxy server
compiles only under LINUX/ UNIX, and not yet under Win32, but could probably
be ported. The GUI front-end is based on Inprise's (former Borland) excellent
RAD tool "C++ Builder"
and is probably not easily portable to any other platform.
This tool can currently not be used as a Netscape/ Internet Explorer browser
plug-in. Further front-ends
could consist of a CGI interface, an ISAPI filter (M$ IIS) or any other similar
technology. Direct
integration into a browser's rendering engine (ALT) would be possible; this
is of particular interest for the
Lynx text browser with public source code. Other offline post-processes in
"author-mode" that crawl a
local site and do some editing can be thought of as well.
1.3.3 Modules & Components
The ALTifier consists of the following modules and components:
¨ ALTifier lexical analyzer back end, to scan and write HTML.
Built around a LEX definition, platform neutral C++ compiled by VC++ &
gcc.
¨ ALTifier heuristics engine back end, platform neutral C++ compiled
by VC++ & gcc.
¨ Interface to some OCR software like OmniPage, Xerox, TextBridge [by
Win DLL?]
¨ GIF toolkit to determine width and height, using gd 2 , maybe get
and set GIF comment
¨ Natural language recognition engine [???]
¨ UNIX CLI front end, written in C with gcc.
¨ Win GUI front end, written with "C++ Builder" RAD tool by Inprise,
formerly Borland.
¨ Crawl engine for interactive Win & UNIX front-ends, shared code
with KISSfp 3
¨ HTTP Proxy front end.
2 http:// www. boutell. com/ gd
3 http:// www. vorburger. ch/ kissfp 6
6 Page 7
8
ALTIFIER -WEB ACCESSIBILITY ENHANCEMENT TOOL Michael Vorburger
7
1.4 HTML TAGS TO ALTIFY (LEXICAL ANALYZER BACK-END)
The following HTML tags are scanned for and supplied with an ALT or similar
attribute suitable for
text based browsing. When reading HTML, the lexical analyzer returns a structure
of the form (type, img-src,
alt, link-url, ...) for each tag, where img-src or link-url, but not both,
can be NULL for some tags. The
lexical analyzer is also invoked to write HTML.
¨ <IMG SRC= src ALT= alt> maps to (type= IMG,
img-src= src, alt= alt, link-url= NULL).
¨ <A HREF= url>< IMG SRC=" button. gif" ALT=
alt></ A> is an image inside a link,
often a button, and maps to (type= IMG-LINK, img-src= src, alt= alt, link-url=
url). Note that
the IMG is the only element inside A, which we shall call a "pure 4 IMG link"
here.
¨ <A HREF= url>...< IMG SRC=" button. gif" ALT=
alt>...</ A> is a non-pure link
image, which returns type= IMG-LINK-NONPURE. The heuristics "ALT guess" engine
distinguishes this case from the above. An IMG which 'directly' precedes
or follows a link,
separated possibly only by HTML white space 5 , could be reported non-pure
as well.
¨ <IMG SRC= src ALT= alt ISMAP> is
a server side image map and is reported as a spe-cial
type: (type= IMG-ISMAP, img-src= src, alt= alt, link-url= NULL). This allows
the heu-ristics
engine to set a standard ALT.
¨ <AREA HREF= url ALT= alt> client side image
MAP maps to (type= AREA, img-src=
NULL 6 , alt= alt, link-url= url). Please note that ALT text for the full
image map (IMG
or OBJECT with USEMAP) is still required to tell the user
that the image is an image map.
¨ <INPUT TYPE=" image" SRC= src ALT= alt
[VALUE=]> maps to (type= IMG, img-src=
src, alt= alt, link-url= NULL). Note that type= IMG, as INPUT can be considered
equivalent to IMG for the purpose of determining ALT text. If no ALT attribute
is present,
but VALUE 7 is, that is returned as alternative, but never written; see comment
below.
¨ <APPLET ALT= alt [ CODE= url | OBJECT= url
] >alt</ APPLET> maps to
(type= APPLET, alt= alt, img-src= url, link-url= NULL). Note that the text
is repeated in the
content of the APPLET tag, when lexical analyzer is writing HTML, if not
already present.
4 A "pure" link is in this document defined as one where /A directly follows
IMG, with no text fol-lowing
or preceding the image inside the A tag.
5 "HTML white space" in this context means ASCII space #32, CR/ NL etc. the
special character
any tag other than P, /P, Hx, BR, TABLE, TR, TD, /TABLE, /TR,
/TD.
6 The img-src of an AREA could theoretically be (temporarily) created by
extracting/ cutting the rele-vant
part of the corresponding MAP/ IMG/ OBJECT. This could be of help for OCR
ALT heuristics. 7
7 Page 8
9
ALTIFIER -WEB ACCESSIBILITY ENHANCEMENT TOOL Michael Vorburger
8
¨ <OBJECT TITLE= title [ DATA= url | CLASSID=
url ] >title</ OBJECT> maps to
(type= OBJECT, img-src= url, alt= title, link-url= NULL). Url is set to either
DATA or
CLASSID, in this order of priority. Title is repeated in the content for
non HTML 4 aware
browsers. OBJECT nesting 8 is handled correctly, setting title only for the
innermost OB-JECT,
and repeating the TITLE attribute for each OBJECT.
¨ <FRAME SRC= url TITLE= title> and
<IFRAME SRC= url TITLE= title> maps to
(type= FRAME, img-src= NULL, alt= title, link-url= url)
If no ALT attribute is found inside IMG, AREA, INPUT &
APPLET tag, but a TITLE is present, the
TITLE is returned as ALT. Please note that this concerns
retrieving ALT only. When setting ALT, either
in author or user (proxy) mode, the lexical analyzer will write an ALT
attribute.
It was thought about allowing to set TITLE and maybe even LONGDESC
additional to ALT. The idea
was not implemented because end users could get confused and the front-ends
would get more compli-cated.
(Note that TITLE is supported for OBJECT & FRAME which
do not have ALT.)
Similarly to accepting TITLE instead of ALT, one could
think of interpreting the NAME, ID or
CLASS attributes. This was not implemented, because these attributes
are of technical nature and are
unlikely to provide a good textual alternative. Also, one could think of
reading the beginning of a LONG-DESC
file for ALT. This was not implemented either, as it is unlikely
an advanced HTML 4 author sets
LONGDESC but not ALT.
If the lexical analyzer finds something like <IMG ... ALT>,
notice the ALT attribute with no
value, it returns ALT="". In writing mode, the attributed is 'completed'
and output as full ALT="". 9
Further points not implemented in this project, but possible as well:
¨ A server side image map could be treated by simulated clicks on a
raster of every eg. 5x5
pixels. This approach is not followed in this project though, partially because
we defined
not to follow links in user mode, but only in author mode.
7 The LYNX documentations states: "Some document authors incorrectly use
an ALT instead of
VALUE attribute for this purpose. Lynx 'cooperates' by treating ALT as a
synonym for VALUE when
present in an INPUT tag with TYPE=" image". This is not consistent with
the latest HTML 4. 0 specifica-tion.
8 In OBJECT nesting, the most multimedia intensive representation (ex. Java
applet) is placed first.
Then another OBJECT containing a different representation (ex. video or image)
is placed between the
start and end tags of the first OBJECT. Finally, a plain text description
is placed between the start and end
tags of the last representation, to be accessed by users who are blind or
using text only browsers.
9 MS FrontPage 'converts' ALT="" to ALT. For Lynx, these two constructions
are not identical. For
example, <A ...>< IMG ... ALT></ A> is displayed
as [LINK], whereas <A ...>< IMG ...
ALT=""></ A> is correctly suppressed. 8
8 Page 9
10
ALTIFIER -WEB ACCESSIBILITY ENHANCEMENT TOOL Michael Vorburger
9
¨ The <NOFRAMES> long-html-alt</ NOFRAMES>
tag inside <FRAMESET> could be sup-ported,
and/ or it's absence be warned in the author mode front-end tools.
¨ <FIELDSET> tag that does not contain LEGEND.
This new element FIELDSET allows
authors to group boxes around form INPUT control. It is especially helpful
to people with
visual disabilities who may be accessing the form using a screen reader.
However, for the
FIELDSET to work properly, a LEGEND element, containing the header text for
the
grouping of controls must be added as the first element within the FIELDSET
element.
¨ <TEXTAREA> can often present a problem for screen reader
users because their labels,
that tell users what to put in the box, may be placed on another line. To
correct this prob-lem,
it is recommended that the field name (i. e. comments, etc.) be added as
the default
field text for edit boxes. For the TEXTAREA element the default text
is simply the text
appearing between the element's start and end tags. This serves to clarify
the function of
edit boxes whose text labels may have been cut off by the screen. A NAME
should also be
defined for both types of elements, especially if default text is not being
used.
¨ "Cross-frame" images, meaning images linked to another frame. This
is generated for ex-ample
by MS PowerPoint, and is difficult to handle, because of the frame and the
fact that
there is no IMG tag, but just an image directly loaded into a frame. (This
is W3C depre-cated
use, see the example and comment in §2.11.5 of [WAI-GL-TECHNIQUES].)
¨ <BODY BACKGROUND= src>, as text-based browsers will
not display this image anyway.
¨ JavaScript interpretation for dynamically loaded images etc.
¨ Netscape specific multimedia EMBED tag. 9
9 Page 10
11
ALTIFIER -WEB ACCESSIBILITY ENHANCEMENT TOOL Michael Vorburger
10
1.5 ALT HEURISTICS (HEURISTICS BACK-END)
In case no ALT or similar attribute is already present, or the one present
is obviously automatic 10 and
therefore not very informative or simply useless, such as ALT= SRC, the following
"heuristics" are used
to "guess" ALT text, depending on the type reported by the lexical analyzer,
each in order of priority.
(Trivial) indicates a flag set in return while in author mode; a front-end
can set the suggested ALT if
it's trivial, but ask the user for one if it's not. In user mode when
acting as a proxy server, the suggestion is
always accepted.
Type = IMG & OBJECT
¨ (Trivial) If in authoring mode, check if ALT text for the
image is already defined in some
other document. The authoring tools (GUI) keeps a simple database in form
a text file with
mappings from IMG-SRC to ALT text.
¨ (Trivial) Set ALT="------" for graphical rulers. The
number of '-' characters is ap-proximated
dividing the pixel width by 10. A graphical ruler decoration is identified
if
height > 1, width / height >= 10, width > 100, height < 50.
¨ (Trivial) Set ALT="* " for graphical bullets. A graphical
bullet decoration is detected if
height > 5, width > 5, width / height <= 4, height < 30, width
< 30.
¨ (Trivial) Set an empty ALT="" 11 if the IMG is a decorative
spacer only. A spacer is rec-ognized
if the image has width or height = 1. (Checking for actual 1x1 GIF transparency
or very small file size is not worth the trouble and waste of bandwidth.)
¨ If the image has a comment built in the image file, this comment is
used as ALT text. To
the author's current knowledge GIF and PNG 12 can have comment, while JPEG
cannot.
(This feature is not of first priority.)
¨ OCR, using an API interface to "Xerox Textbridge" (?) if installed.
This is likely to suc-ceed
for IMG-LINK buttons which show "Home" etc. (This feature is not of first
priority.)
¨ Request (query) ALT text from and submit new descriptions to some
kind of "ALT text
server", yet to be set up, as outlined in http:// www. w3. org/ WAI/ altserv.
htm. (This is not a
first priority.)
10 An automatically generated ALT is detected if it contains the word "byte",
"gif", "jpeg", as tools
such as MS FrontPage would often insert these when simply setting ALT= SRC.
11 http:// www. w3. org/ WAI/ GL/ wai-gl-techniques-19980918. html# spacer-images
12 See http:// www. w3. org/ TR/ PNG-Chunks. html# C. tEXt 10
10 Page 11
12
ALTIFIER -WEB ACCESSIBILITY ENHANCEMENT TOOL Michael Vorburger
11
¨ Natural language recognition to identify and extract non-common nouns
in the paragraphs
surrounding (before and/ or after) the image. (This is not a first priority.)
¨ Return the src filename, cutting off the path and extension
of the file, replacing '_ ' and '-'
by a blank space. This is based on the hope that webmasters or graphics designers
give
meaningful names to their images, like help. gif or options.
gif etc.
Type = IMG-LINK & IMG-LINK-NONPURE
¨ For pure A-IMG-/ A links, and if the link target is an
HTML document, then return the
"document link title" as defined below. (Only in authoring mode, having
possible waste of
bandwidth by fetching all linked pages in mind. This could be a configurable
option.)
¨ For non pure IMG links, that is if there is some text between
the A, IMG and /A tags, re-turn
an empty ALT="". The reason for this is that such an image is likely
to be a small
inline decoration which, if it disappears in text browsing, is no loss of
information as the
existing link text suffices.
Type = APPLET
¨ (Trivial) Return "[ Java Applet]" as default.
Type = IMG-ISMAP
¨ (Trivial) Return "[ Server Side Image Map]" as default
for an IMG-ISMAP. An author
should overwrite this suggestion and set an empty ALT="" if there are alternative
textual
links on that page.
Type = AREA & FRAME
¨ Return the document link title of the referenced (link-url
= HREF or SRC) page.
For all types, an optional setting allows to terminate all non-empty ALT
text with a punctuation ('. ').
This seems to be helpful to screen readers, causing them to briefly pause,
according to comments ex-pressed
in mailinglists.
It is ensured that empty ALT="" is never set inside a pure link, for none
of the above points. Please
note that this tool will never insert ALT text or comment such as "Place
Alt text here" or anything similar
as this is completely useless. 11
11 Page 12
13
ALTIFIER -WEB ACCESSIBILITY ENHANCEMENT TOOL Michael Vorburger
12
1.5.1 Document Link Title
A document's "Link Title" is used as ALT text for an image if this one
is the system is in authoring
mode, and the image is in a link, and the link target is an HTML document
and not another image, a
thumbnail.
Under these conditions, the link is followed and the HTML document is examined
for some concise
title. First of all, the TITLE tag is regarded. This document link
title could be slightly different from
TITLE, and is (can) be stored in the document in some META tag. It could
be edited by the end user in
author mode. This META tag could be set when a textual link to the document
is found, allowing eg.
image map links where this information is missing to "inherit" it from textual
links. This idea is inspired
by 13
If a TITLE contains any strings of the form ' ' (space, dash, space)
then the string until the occur-rence
of the such string is used as ALT. This is to eliminate long and repeated
site descriptions in titles
such as "Encountered Problems SumInfo Projects Michael
Vorburger's Homepage". This feature is
not of first priority and can be turned off in the configuration. (If a "reverse
site descriptive" title such as
"Michael Vorburger's Homepage Projects SumInfo Encountered
Problems" is used, this could be
recognized by checking if the start is always the same, namely the site's
name.)
If no TITLE is found, the document's first H1 is used as ALT, if no H1 is
present, the document's H2
is used, and so forth. Some maximum length (eg. 100-150 characters, or less???)
might be imposed on the
text. Cutting is always done at word borders. If no Hx is found, a short
title is extracted from text that
follows the BODY tag, taking eg. 100-150 (less???) characters and cutting
at word borders. If the link's
A/ HREF tag contains a # named destination, the TITLE check could be skipped
and only the Hx check
from the named destination, maybe a bit earlier, on, should be done. Another
possibility would be to
check <META SUMMARY> tags.
If the target document of a link is a frame set, the above procedure is executed
on the first frame's
content, or the frame named "main" if any, or the NOFRAME text if it seems
to be reasonable. A reason-able
NOFRAME text is one not containing more than 2-3 of the following keywords
in the first 300 char-acters:
"browser, no, not, please, upgrade, update, download, netscape, ns, ie,
explorer". (This feature is
not of first priority.)
13 "Another technique for image map AREA tags that don't have ALT text (or
other url with no de-scription
of the target) would be to search for a text link with the same URL, and
use that text link as ALT
text for the AREA tag (optionally, the tool would then delete the text link
at the bottom since it is then
redundant)." from http:// www. w3. org/ WAI/ ER/ text-equiv# imgrepetition
12
12 Page 13
ALTIFIER -WEB ACCESSIBILITY ENHANCEMENT TOOL Michael Vorburger
13
2 REFERENCES
[1] "Textual Equivalents -techniques to be used by tools taking HTML as input
and trying to come up
with textual alternatives for all sort of visuals lacking their native
description", Daniel Dardailler,
based on comments received on the WAI ER IG list. http:// www. w3. org/ WAI/
ER/ text-equiv. htm
[2] "WAI Accessibility Guidelines: Page Authoring", G. Vanderheiden, W. Chisholm,
and I. Jacobs, eds.
Available on-line at: http:// www. w3. org/ TR/ WD-WAI-PAGEAUTH
[3] "WAI Accessibility Guidelines: Page Authoring Techniques", G. Vanderheiden,
W. Chisholm, and I.
Jacobs, eds. Available on-line at: http:// www. w3. org/ WAI/ wai-gl-techniques
[4] "WAI Accessibility Guidelines: Authoring Tools", J. Treviranus , J. Richards,
N. Sicchia, I. Jacobs.
Available on-line at: http:// www. w3. org/ WAI/ AU/ WAI-AUTOOLS. html
[5] "WAI User Agent Guidelines", J. Gunderson, I. Jacobs. Available on-line
at:
http:// www. w3. org/ WAI/ UA/ WD-WAI-USERAGENT/
[6] "HTML 4.0 Recommendation", D. Raggett, A. Le Hors, and I. Jacobs, eds.
Available on-line at:
http:// www. w3. org/ TR/ REC-html40/
[7] For the graphical ruler/ bullet/ spacer decoration recognition rules:
"HTML++ Class Library with
HTML Parser TextOnly Filter", Michael Vorburger, http:// www. vorburger.
ch/ projects/ textonly
[8] "The Three -tions of Accessibility-Aware HTML Authoring Tools", J. Richards.
Available on-line at:
http:// www. utoronto. ca/ atrc/ rd/ hm/ 3tions. htm
[9] "WAB: World Wide Web Access for Blind and Visually Impaired Computer
Users", a proxy server
that inserts list of links and headings, among others. http:// www. inf.
ethz. ch/ department/ IS/ ea/ blinds/
[10] Microsoft on Accessibility, at http:// www. microsoft. com/ enable/
[11] "Lex und Yacc", Helmut Herold, Addison-Wesley 13