views:

45

answers:

2

I am not talking about white space in the content, but the code itself.

I had a bunch of validation errors in my HTML and discovered it was because I was missing a space in my markup -

<td class="col_title"colspan="2">

Line 1, Column 80: attributes construct error
Line 1, Column 80: Couldn't find end of Start Tag td line 1
Line 1, Column 80: Opening and ending tag mismatch: tr line 1 and td
Line 1, Column 80: Opening and ending tag mismatch: tbody line 1 and tr
Line 1, Column 80: Opening and ending tag mismatch: table line 1 and tbody
Line 1, Column 80: Opening and ending tag mismatch: div line 1 and table
Line 1, Column 80: Opening and ending tag mismatch: body line 1 and div
Line 1, Column 80: Opening and ending tag mismatch: html line 1 and body
Line 1, Column 80: Extra content at the end of the document

All were highlighting the following line (I was validating local HTML if it makes any difference)

…1.0 Transitional//EN"  "http://www.w3.**o**rg/TR/xhtml1/DTD/xhtml1-transitional.dt…

I assumed this wouldn't matter, but the W3C validator states otherwise. Adding a space between them fixed the errors -

<td class="col_title" colspan="2">

It means you have to be extra careful when writing HTML, and errors like this are a real pain to find. I was looking for missing closed tags within the table.

Does HTML deal with white spaces the same as this for every tag?

+2  A: 

The W3C recommendation requires spaces:

Elements may have associated properties, called attributes, which may have values (by default, or set by authors or scripts). Attribute/value pairs appear before the final ">" of an element's start tag. Any number of (legal) attribute value pairs, separated by spaces, may appear in an element's start tag. They may appear in any order.

http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.2.2

Of course, browsers are supposed to fix the errors they find and that's why your HTML works properly. However, you should try to produce valid HTML: the rendering of valid HTML is defined and (more or less) predictable but the rendering of invalid HTML is basically random ;-)

Álvaro G. Vicario
+2  A: 

As the quotation marks are optional in HTML, the spaces can't be. The browser would not be able to tell where the value ended and the next attribute started:

<td class=col_titlecolspan=2>

Some browsers are more picky about these things than other, and it differs between HTML and XHTML. The validator is a good tool, as it's stricter about syntax than any browser. If it works there, no browser will have a problem understanding the syntax.

Guffa
I had no idea quotation marks were optional. Makes much more sense now.
danixd
They're optional in HTML, for simple alphanumerical-and-underscore attribute values; once you start putting punctuation in there it's no longer valid and browsers may behave differently. In any case, if you're using XHTML—which you seem to be, from the partially-quoted DOCTYPE—you are subject to stricter rules (but simpler ones) and you must include both the quotes and the space.
bobince