Re: Problem with validator

On Mon, 17 Sep 2007, webmaster@reflexprojects.net wrote:

> I recently tried to validate my website using your service (it is coded
> in PHP, but that doesn't appear to be the problem), and it found 3
> errors.

Whether your page is PHP generated or not does not matter in validation; 
the validation does not even know that. But what _is_ important is the URL 
of your page.

> Upon looking at these, it was an error with using
> 'background="image"' functions within a <td> tag.

The background attribute is not allowed for <td> in any published 
specification. If you wish, you can use the validator on documents that 
contain proprietary attributes and elements, but then you need to specify 
a Document Type Definition (DTD) that contains them. This, however, is 
probably not productive here, since you only have three errors.

You might decide to ignore the errors, if you know what you are doing: 
you are using proprietary attributes that are supported by many browsers 
but not all and that do not belong (and most probably will never belong) 
to any HTML specification. So you could just check whether _all_ error 
messages relate to markup features that you consciously use against 
specifications.

> So, I asked for a tidy
> HTML version, and it generated one. I added this in, put the PHP coding
> in, but the backgrounds in the tables had gone.

Most probably Tidy cleaned away the attributes. Did it put some CSS with 
the same functionality? Hard to tell without a URL. (I don't use Tidy, 
since it does not work reliably - and it cleans things up in somewhat odd 
ways.)

> Does this mean I can't
> have table backgrounds for valid HTML?

Well, anyway the fact is that you cannot set background images for tables 
or cells using HTML attributes in a valid way (when "valid" means "valid 
with a DTD specified in HTML specifications") . This needs to be deduced 
from HTML specifications, though; you cannot logically derive it from the 
observations you mentioned. There simply isn't any markup in HTML for 
setting a background image except for the <body> element.

> And is there an
> HTML-friendly way to do it if possible?

I'm not sure I understand what you mean by "HTML-friendly", but you can 
set a background image in CSS, and it actually works a little more often 
than the proprietary way. Using a style sheet embedded in a style 
attribute (which is _not_ the recommended way - check CSS guides and 
tutorials for the recommended ways - but suitable for a quick demo), you 
could write

<td style="background-image: url(foo.gif);">

or, better (see CSS guides, etc.)

<td style="background: white url(foo.gif); color: black;">

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

Received on Tuesday, 18 September 2007 06:55:03 UTC