HTML5是否需要引用值的属性之间的空格?

时间:2014-05-27 10:28:54

标签: html

当属性具有值并且引用了这些值时,HTML通常允许属性之间没有空格。

示例(Reference/Source):

  

在HTML文档中,不需要属性之间的空格。

<!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>                                                                                                                        

见第三行:

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

现在使用这样的HTML块将doctype更改为HTML 5(<!DOCTYPE HTML>),使experimental W3C HTML 5 conformance checker完全错误地告诉我:

  

验证输出:1错误

     

错误第9行,第22列:属性之间没有空格。

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

所以我认为HTML 5向后兼容浏览器在现实中处理HTML的方式和浏览器AFAIK处理这个问题。所以我至少有点困惑。我也有问题破解(有些不必要的)编译的HTML 5规范在这一点上是精确的,因为我找到了(W3C再次,见http://www.w3.org/TR/html-markup/syntax.html#syntax-attributes)它不是说这是(可能也不一定)是一个错误。

3 个答案:

答案 0 :(得分:9)

您正在阅读已停产的非规范性参考文献。如果你看一下规范中start tag的定义(这是规范性的),它会说:

  

然后,开始标记可以具有多个属性,其语法如下所述。 属性必须通过一个或多个空格字符分隔。


  

所以我认为HTML 5向后兼容浏览器在现实中如何处理HTML以及浏览器AFAIK处理这个问题。

与现实世界标记兼容是一个设计目标,但许多事情已经过时,遗漏属性之间的空间几乎不会故意发生。

答案 1 :(得分:1)

您在问题中链接的文档的

Section 4.3, "Elements"说:

  

可选地,一个或多个属性,每个属性必须以   一个或多个空格字符。

答案 2 :(得分:-2)

使用W3C Official HTML Validator,如果您使用HTML5 Doctype,则在属性之间没有空格会被检查为错误:

<!DOCTYPE html>

输出消息如下:

  

第9行,第23栏:属性之间没有空格。