没有引号的HTML属性?

时间:2012-03-23 09:53:15

标签: html

我一直以为html在他的属性中需要引号:

<div class="service_definition"><div class='service_definition'>

但是最近我发现w3验证器不会将以下内容识别为错误:

<div class=service_definition>

如果我省略引号,那么可以吗?或者有任何限制吗?

5 个答案:

答案 0 :(得分:13)

始终使用引号。

我不相信没有引号的HTML属性被归类为无效HTML,但它们可能会在以后的行中引起您的问题。

  

默认情况下,SGML要求使用分隔所有属性值   双引号(ASCII十进制34)或单引号   标记(ASCII十进制39)。单引号可以包含在内   当值由双引号分隔时的属性值,   反之亦然。作者也可以使用数字字符引用   代表双引号(“)和单引号(')。对于double   引号作者也可以使用字符实体引用“。

     

在某些情况下,作者可以指定属性的值   没有任何引号。属性值可能只包含   字母(a-z和A-Z),数字(0-9),连字符(ASCII十进制45),   句点(ASCII十进制46),下划线(ASCII十进制95)和冒号   (ASCII十进制58)。我们建议使用引号,即使它是   可以消除它们。

来源:http://www.w3.org/TR/REC-html40/intro/sgmltut.html#h-3.2.2


我认为它们是明确定义属性值何时开始和结束的好方法。

class属性为例,该属性可以包含多个以空格分隔的类:

<div class="classa classb" id="123">

这清楚地显示了我的课程为classaclassb的浏览器,其元素ID为123

取走引号,我们得到了:

<div class=classa classb id=123>

浏览器现在可以将其解释为3个类,没有id。 classaclassbid=123

或者甚至可以将其解释为3个属性。 class="classa"classb=""id="123"

(甚至stackoverflow的语法样式也在努力解决这个问题!)

答案 1 :(得分:8)

规则取决于HTML版本。

在各种XHTML中,属性值必须始终以引号显示,因为XHTML是XML。验证者自然会检查这个。在浏览器实践中,它是不同的。在真正的XML模式中,缺少的引用中止文档解释:未显示内容,仅向用户显示错误消息(可能包含源代码的提取)。但是当XHTML作为HTML提供时,这是正常的方式(特别是由于旧版IE的XHTML文盲)浏览器通过HTML规则对其进行处理。

否则在HTML中,正式规则因规范而异,但浏览器接受没有引号的属性值。 HTML5草稿反映了这种自由态度:仅当值包含空格,换行符,坟墓(`),等号(=),小于符号(&lt;),大于符号(&gt;)时才需要引号, Ascii引用(“),或Ascii撇号(')。

你在实践中所做的事情很大程度上取决于惯例,它应该取决于同事或其他可能在你的代码上工作的人的意见,而不是公众舆论。许多人认为XHTML的限制性语法很酷。其他人可能会认为不必要的引用会扰乱代码甚至会产生一些风险:每当你需要成对使用某些字符时,总会有机会忘记关闭组件或者错误输入它。

答案 2 :(得分:5)

如果值仅包含以下字符,则可以省略属性值中的引号(参见名称的技术概念):

letters of the English alphabet (A to Z, a to z)
digits (0 to 9)
periods .
hyphens -

因此,WIDTH = 80和ALIGN = CENTER是WIDTH =“80”和ALIGN =“CENTER”的合法缩写。可以接受对诸如HREF = foo.html之类的URL的引用,但通常在属性中使用时必须引用URL,例如HREF = “http://www.hut.fi/”。 - 有些浏览器更宽松。有些浏览器甚至可能接受带有起始引用但没有任何结束引用的元素。这种使用是非常糟糕的做法。

参考http://www.cs.tut.fi/~jkorpela/HTML3.2/3.4.html

答案 3 :(得分:0)

w3验证器将它显示为我的错误:

An attribute value specification must be an attribute value literal unless SHORTTAG YES is specified.

答案 4 :(得分:0)

有时您可以使用不带引号的HTML属性。

我最近在SharePoint中创建了一个链接到公司Web应用程序的文本文档。使用href值(网站网址)的引号时收到错误消息。这在技术上是正确的。

我在DOM中注意到,浏览器会自动将一组引号添加到href值。所以我尝试输入没有引号的href值,这修复了导航错误。