html5的标准文档结构,HTML5标准学习-文档结构详解

5268f80b9b1e01f982625ef6fac83ca1.png

说起HTML的结构,很多人都能说得头头是道,一般来说答案可能是这样的:一个DOCTYPE,一个html,里面有head和body元素。

这当然不能说是不正确的,但是如果问到一个最小的HTML源文件必须有哪一些东西的话,恐怕很少有人能正确地做出回答。

先来回答一下这个问题,一个最简的HTML5源码文件需要的内容如下:

是的,就这样,一个字符不多,一个字符不少,除了大小写可任意变化外,其他的任何内容都是不能变动的。

那么究竟是怎么样的规则,导致一个最简的源码文件必须有doctype声明呢?根据标准,一个HTML文档有如下内容组成(严格按照顺序):一个BOM标记,且这个BOM标记必须为U+FEFF。

0-n个空格或注释。

DOCTYPE声明。

0-n个空格或注释。

一个HTML元素。

0-n个空格或注释。

这里存在着一些和HTML4的不同,一个HTML4的最简源码文件是这样的:/p>

"http://www.w3.org/TR/html4/loose.dtd">

这里是标题

两者的区别是显而易见的:HTML5把DOCTYPE修改为更简单的,这个已经众所周知了。

在HTML4中多了一个

标签。

这里的重点就是

标签了,关于这个标签,在HTML4.01标准中是这么说的:Every HTML document must have a TITLE element in the HEAD section.

也即是说,HTML4要求

标签是必须存在的。

而在HTML5的标准中,又是这么说的:There must be no more than one title element per document.

HTML5中只设定了

标签数量的上限,却没有指明下限,也就是说,没有的文档已经被视为一个合法的文档了。

对于DOCTYPE,HTML4中设定了6种DOCTYPE,HTML5中将DOCTYPE分为3种,这个在以后的章节中再具体说明。

再回过来看一下文档组成,除去这样并没有多大意义的元素之外,组成的列表中还说明有一个HTML元素,但是最简的源码中却没有这东西。这是因为在HTML的规范中,一直存在“隐式标签”这样的概念,关于隐式标签,大致可以这么解释:一部分元素,当满足特定的前提条件时,其开始标签或结束标签可以在源码中省略。在这种情况下,被省略的标签称为“隐式标签”。

需要注意的是,此处的省略指的是在源码中省略,而在最终成型的DOM树中,这个标签是存在的,因此才称为隐式标签。因此上面最简的源码结构,在生成DOM树后,其真正的结构是这样的:

最后,再总结一下XHTML中的一些规范:因为是XML,所以为了表示这是一个HTML文档,必须有一个命名空间,其值为www.w3.org/1999/xhtml。

因为是XML,所以MIME type不能是text/html了,text/xml、application/xml、application/xml+html都是比较好的选择。

因为是XML,必须有根元素,根元素为,即的开始和结束标签不能省略了。

因为是XML,所有元素只要有了开始标签,就不能没有结束标签,或者自闭合。

因为是XML,所有元素都得严格遵守大小写,元素名称必须为小写。

因为是XML,文档变得严格了很多,也因为是XML,其可读性和规范性提高了不少。但最终,我们始终要在HTML的宽容性和XML的规范性之间找到最佳的平衡点,一味地追求极端始终是一个错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值