Re: Error Message Feedback

On Sat, 29 Oct 2005, Naturally Naomi wrote:

> Validating [Hello,
> I tried to add the <MAP> element to my page
>(as described on 
> http://www.w3.org/TR/WCAG10-HTML-TECHS/#group-bypass), which returned an 
> error in HTML 4.0.1. Strict. What can I do to make the below code HTML 
> 4.0.1 Strict, or should I switch to HTML 4.0.1 Transitional?

You probably mean HTML 4.01.

> "<MAP title="Navigation Bar">
> <ul>
>  <li><a accesskey="1" href="index.html">Home</a></li>
>  <li><a accesskey="2" href="episodes.html">Episodes</a></li>
>  <li><a accesskey="3" href="about.html">About
> Us</a></li>
>  <li><a accesskey="4" href="news.html">News</a></li>
>  <li><a accesskey="5" href="testers.html">Testers</a></li>
>  <li><a accesskey="6" href="support.html">Support</a></li>
>  <li><a accesskey="7" href="webbuilding.html">Website
> building</a></li>
>  <li><a accesskey="8" href="forum.html">Forum</a></li>
> </ul>
> </MAP>”,

There are many different problems involved. First, what you are doing
to follow certain WCAG 1.0 guidelines on accessibility is an exercise
in futility or worse. Wrapping the list inside a <map> element helps
no one in practice, and using accesskey attributes tends to hurt rather
than help (that's at least the current view of most accessibility
experts) - it may break the functionality of _browser_ shortcuts.

On the technical side, you didn't post the URL of your document. The URL 
is relevant even if you have guessed right where the problem is, and 
people often haven't. In particular, when you post a snippet of code
(markup), E-mail programs may distort the data. In this case,
one of the problems is probably a no-break space, and who knows
what happens to it in E-mail? (It reached me, but I don't know about
others.)

Among the problems that the validator reports, if we construct a minimal
test document around the <map> element is that the element lacks a 
required NAME attribute. Adding name="" would do, since the <map>
markup has no effect anyway - so you might just as well remove
the <map ...> and </map> tags. If you keep the <map> element for
some reason, then you need to wrap it inside a block level container
such as <div> in order to satisfy Strict rules.

The strangest problem, however, is caused by no-break spaces (U+00A0)
inside the <ul> element, at the start of lines, before the <li> tags.
You have indented the <li> elements by using one space and one
no-break space.

I created a trivial test document
http://www.cs.tut.fi/~jkorpela/test/nbsp.html
that has a <ul> element with one <li> element inside it but
with a no-break space before the <li> tag. Here's what the
W3C validator says:

1. Error Line 5 column 0: start tag for "LI" omitted, but its declaration 
does not permit this.
¼/strong>?<li></li>

There's something very strange in the report's source.

The WDG validator reports:

Line 5, character 1:
  <li></li>
^Error: start tag for LI omitted

This makes more sense.

The problem with the no-break space is that it is not defined
as a whitespace character. Instead, it is treated as a data character,
so inside a <ul>, it is forbidden except when it appears inside
a <li> element. The validators seem to imply a missing <li> before
the no-break space, which doesn't quite hit the nail in this case.

-- 
Jukka "Yucca" Korpela, http://www.cs.tut.fi/~jkorpela/

Received on Sunday, 30 October 2005 08:10:07 UTC