zoukankan      html  css  js  c++  java
  • 读书笔记:HTML5的Doctype

    我们在HTML文档书写中,在开头总会添加一句<!DOCTYPE>,我们大概粗略的知道这是用来标识文档类型的。而在老版本的HTML中,如HTML4规范中,需要写:

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

    但这样的语句很难记忆,它想告诉浏览器“这个文档是XHTML1.0的文档”,在HTML5中简化了规范。

    但是,只是看到这个DOCTYPE,可能不知道到底要怎么告诉浏览器具体的信息,所以这到底该怎么解释?

    其实这个DOCTYPE并不是写给浏览器看的,而是给验证器,我们在开头写下XHTML1.0是为了让验证器按照这个来验证文档。

    而对浏览器来说,什么版本都无所谓,浏览器不会因为某个标签不存在某个版本的规范中而不被解析,因为浏览器遵守伯斯塔尔法则——“对自己严格,对别人宽容”,所以浏览器会支持所有版本的HTML,会尽量让我们任性,所以这就是为什么我们书写的HTML很多并不规范,但任然不影响它们在网页中被正常解析(但为了养成一个良好的习惯,我们也应该严格要求自己)。话再说回来,验证器会在意这个格式类型,这就是DOCTYPE存在的原因。

    HTML5 不基于 SGML,所以不需要引用 DTD。

    在 HTML 4.01 中,<!DOCTYPE> 声明引用 DTD,因为 HTML 4.01 基于 SGML。DTD 规定了标记语言的规则,这样浏览器才能正确地呈现内容。

    SGML:标准通用标记语言。

    HTML5的一个设计原理,就是要求它前后兼容,以往的将来的都应该兼容,因此把一个版本号放在DOCTYPE里面没有多大的意义,对验证器也一样。

    但是也不是说DOCTYPE完全可以不用存在。当初微软在引入CSS的时候,它的浏览器率先支持了CSS,也推出了自己的盒子模型标准。但是标准发布后,两种盒子模型截然不同。微软希望支持标准,也希望能保留自己的东西,所以就利用了DOCTYPE。在文档中加入DOCTYPE就表示触发标准模式。但是这不是DOCTYPE发明的本意。

    总之,HTML5希望给用户一个简短的DOCTYPE标签。

  • 相关阅读:
    hadoop 学习(一)ubuntu14.04 hadoop 安装
    Java开发笔记(三十四)字符串的赋值及类型转换
    Java开发笔记(三十三)字符包装类型
    Java开发笔记(三十二)字符型与整型相互转化
    Java开发笔记(三十)大小数BigDecimal
    Java开发笔记(二十九)大整数BigInteger
    Java开发笔记(二十八)布尔包装类型
    Java开发笔记(二十七)数值包装类型
    Java开发笔记(二十六)方法的输出参数
    Java开发笔记(二十五)方法的输入参数
  • 原文地址:https://www.cnblogs.com/rimochiko/p/7487241.html
Copyright © 2011-2022 走看看