Re: Attributes with no value

pdf@bizfon.com <pdf@bizfon.com> wrote:

> Does anyone know if this is invalid HTML?

> <img alt src="someimage.gif">

The validator is correct, InterDev is wrong.

This stems from a common misunderstanding of what those single-word
attributes mean. It's really not a 'valueless attribute', but an
'attributeless value'. When you specify a single-word attribute,
you're specifying the value, not the attribute. Thus:

  <div center>Hello!</div>

is NOT equivalent to:

  <div center="">Hello!</div>

but in fact:

  <div align="center">Hello!</div>

and this is in fact a perfectly valid way of saying it, although
it isn't going to work in any mainstream browser. Obviously the
parser needs to know which attribute the value belongs to, so
this only works for values with fixed names, like 'center' in
this example. That's why the validator choked: it looked for
an attribute valid on <img> that could have the token 'alt' as
its value. Since none was found, it complained.

> Is there some fundamental principle of HTML that I'm missing?

Not HTML, but SGML, of which HTML is supposedly an application.
(Though very few browsers are actually proper SGML parsers.)
SGML has some tricky corners like this which XML was designed
to avoid and simplify.

HTML has made this particular problem quite sneaky, by giving
on/off attributes like, say, 'compact' the same name and
value. So:

  <dl compact>

is equivalent to:

  <dl compact="compact">

(Not <dl compact=""> in any case, whatever InterDev may think.)
This makes it *look* like the short version is specfying the
attribute name, but it's really the value.

> If not, then is it possible to modify the validator to see
> these as the same thing, therefore allowing my document to
> validate even after Microsoft has mutilated it?

They're not the same thing, I'm afraid. You'll have to work
around the problem. If InterDev has an XHTML output mode you
could try that (the short-form is not allowed at all in XML,
though I suppose that doesn't necessarily mean MS won't write
it). Otherwise, try putting a space as the value of the alt
attribute, I guess; should be mostly harmless

-- 
Andrew Clover
Technical Support
1VALUE.com AG

Received on Thursday, 9 November 2000 12:38:24 UTC