繁体   English   中英

HTML4中是否允许没有值的属性?

[英]are attributes without value allowed in HTML4?

我想知道HTML 4是否允许没有值的属性,因为它等同于具有空值的属性。 例如:

<h2 section>foobar</h2>

而不是: <h2 section="">foobar</h2>

这两个片段同样有效吗? 如果没有,它们是否在HTML版本5中有效?

谢谢!

布尔属性,是的,它们完全有效。

来自W3C :( 在SGML和HTML上)

某些属性扮演布尔变量的角色(例如, OPTION元素的selected属性)。 它们出现在元素的开始标记中意味着属性的值为“true”。 他们的缺席意味着“虚假”的价值。

布尔属性可以合法地采用单个值:属性本身的名称(例如, selected="selected" )。

这表明布尔属性在HTML4中也是有效的,但是如果你使用类似的东西,则会无效..因为布尔值属于option标签..感谢@Ronni Skansing澄清疑问..

 <p selected>Hello</p> 

在此输入图像描述


HTML5文档:

来自W3C

空属性语法

可以通过仅提供属性名称来指定某些属性,而不使用任何值。


来自W3C :( 每晚HTML 5.1)

许多属性是布尔属性。 元素上存在布尔属性表示真值,缺少属性表示false值。


section是一个无效的属性,如果你想定义自己的属性,HTML5提供了一种方法来做到这一点..你需要使用data- prefix,例如,你的section应该写成data-section ,这样你的属性就会被视为有效


如果您犹豫不决,我们总会有一个验证器来检查 - W3C标记验证服务

在此输入图像描述

^验证为HTML5


注意 :虽然我提供的data-适用于HTML5,但是使用HTML4中的自定义属性无效,即使您在属性名称之前定义data- ,但布尔属性在HTML4中也是有效的。

正式定义,HTML 4不允许没有值的属性。 通常被视为没有值的属性,如在<input checked> ,正式地是没有属性名称(和等号)的属性值。 虽然在HTML 4规范中使用特殊的最小化规则误导性地称为“布尔属性”,但这些规范规范地引用了SGML标准。

根据SGML标准,每当通过枚举作为唯一允许值的关键字来声明属性时,属性规范在某些条件下可以最小化到该值。 这意味着在HTML 4中,标签<input checkbox>有效; 该属性是type=checkbox的最小化形式。 没有浏览器支持(它们将checkbox解析为属性名称),但在验证器中,构造通过。

在实践中,浏览器支持的属性最小化规则的一部分仅包括将属性声明为仅允许单个关键字值的特殊情况,例如checked属性,该属性正式声明为

 <!ATTLIST INPUT checked     (checked)      #IMPLIED>

所以它取决于HTML 4规范中如何声明属性。

但这意味着最小化的属性checked意味着checked=checked 该值不为空,但checked了关键字。 另一方面,浏览器将这些属性视为“存在属性”:重要的是元素是否具有该属性,而不是其值。

在HTML5中序列化为XHTML(即XML),事情很简单:每个属性规范必须是name =“value”或name ='value'的形式,所以等号是必需的,引号也是如此; 从逻辑上讲,值始终存在,尽管它可以是空字符串,如alt=""

在HTML5序列化为HTML中,定义了一些属性,因此不需要属性值(和等号)。 而是容易混淆,他们宣称为“布尔属性”(它混淆例如因为值属性truefalse不允许的,但名称一定程度上反映的原则,相应的DOM属性,或“IDL属性”他们称之为,有真值truefalse作为唯一允许的值)。 对于这些属性,根据定义,该值甚至是无关紧要的; 只有属性的存在才重要。 例如,对于checked属性,不使用任何值,但是如果给出了值,则它必须是空字符串( checked="" )或与属性名称相同,不区分大小写(例如, checked=Checked )。 任何其他值都是不一致的,但需要工作,具有相同的含义(例如, checked=false表示与checked相同)。

关于具体示例,它在任何版本的HTML中都无效,因为没有声明属性section

两个片段在html4和html5中在语法上都有效。 第一个是无效的xhtml,因为在xhtml中需要一个属性值。

另一方面,section不是定义的属性,但它是html5中的有效标记。 因此,您的代码无效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM