hakre
hakre

Reputation: 198219

Does HTML5 requires spaces between attributes that are of quoted values?

HTML does normally allow to have no spaces between attributes when attributes have values and those values are quoted.

Example (Reference/Source):

In HTML-documents no White Spaces between Attributes are needed.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"                                                                 
     "http://www.w3.org/TR/html4/loose.dtd">                                                                                   

<html>                                                                                                                         
  <head>                                                                                                                       
    <title>no attribute space</title>                                                                                          
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">                                                   
  </head>                                                                                                                      
  <body>                                                                                                                       
    <p class="CLASS"title='TITLE'></p>                                                                                         
  </body>                                                                                                                      
</html>                                                                                                                        

See the third-last line:

    <p class="CLASS"title='TITLE'></p>                                                                                         
                   ^^

Now using such HTML chunk changing the doctype to HTML 5 (<!DOCTYPE HTML>), makes the experimental W3C HTML 5 conformance checker give an error exactly there telling me:

Validation Output: 1 Error

Error Line 9, Column 22: No space between attributes.

    <p class="CLASS"title='TITLE'></p>
                    ^

So I thought that HTML 5 is backwards compatible to how browsers deal with HTML in reality and browsers AFAIK deal with this well. So I'm a bit puzzeled at least. I also have problems to decipher the (somewhat needlessly) compilcated HTML 5 specs to be precise at this point because what I did find (W3C again, see http://www.w3.org/TR/html-markup/syntax.html#syntax-attributes) it's not saying that this is (may nor must) be an error.

Upvotes: 10

Views: 14442

Answers (3)

RichieHindle
RichieHindle

Reputation: 281835

Section 4.3, "Elements" of the document you link in the question says:

Optionally, one or more attributes, each of which must be preceded by one or more space characters.

Upvotes: 1

Quentin
Quentin

Reputation: 944442

You are reading a discontinued, non-normative reference. If you look at the definition of the start tag in the specification (which is normative) it says:

Then, the start tag may have a number of attributes, the syntax for which is described below. Attributes must be separated from each other by one or more space characters.


So I thought that HTML 5 is backwards compatible to how browsers deal with HTML in reality and browsers AFAIK deal with this well.

Being compatible with real world markup is a design goal, but lots of things have been obsoleted and leaving out the space between attributes is something that almost never occurs intentionally.

Upvotes: 10

Rafa Romero
Rafa Romero

Reputation: 2716

Usin the W3C Official HTML Validator, having no spaces between attributes are checked as errors if you use the HTML5 Doctype:

<!DOCTYPE html>

The output message is the following:

Line 9, Column 23: No space between attributes.

Upvotes: -2

Related Questions