说起HTML的结构,很多人都能说得头头是道,一般来说答案可能是这样的:
一个DOCTYPE,一个html,里面有head和body元素。
这当然不能说是不正确的,但是如果问到一个最小的HTML源文件必须有哪一些东西的话,恐怕很少有人能正确地做出回答。
先来回答一下这个问题,一个最简的HTML5源码文件需要的内容如下:
<!DOCTYPE html>
是的,就这样,一个字符不多,一个字符不少,除了大小写可任意变化外,其他的任何内容都是不能变动的。
那么究竟是怎么样的规则,导致一个最简的源码文件必须有doctype声明呢?根据标准,一个HTML文档有如下内容组成(严格按照顺序):
- 一个BOM标记,且这个BOM标记必须为U+FEFF。
- 0-n个空格或注释。
- DOCTYPE声明。
- 0-n个空格或注释。
- 一个HTML元素。
- 0-n个空格或注释。
这里存在着一些和HTML4的不同,一个HTML4的最简源码文件是这样的:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<title>这里是标题</title>
两者的区别是显而易见的:
- HTML5把DOCTYPE修改为更简单的
<!DOCTYPE html>
,这个已经众所周知了。
- 在HTML4中多了一个
<title>
标签。
这里的重点就是<title>
标签了,关于这个标签,在HTML4.01标准中是这么说的:
Every HTML document must have a TITLE element in the HEAD section.
也即是说,HTML4要求<title>
标签是必须存在的。
而在HTML5的标准中,又是这么说的:
There must be no more than one title element per document.
HTML5中只设定了<title>
标签数量的上限,却没有指明下限,也就是说,没有<title>
的文档已经被视为一个合法的文档了。
对于DOCTYPE,HTML4中设定了6种DOCTYPE,HTML5中将DOCTYPE分为3种,这个在以后的章节中再具体说明。
再回过来看一下文档组成,除去0-n个空格或注释这样并没有多大意义的元素之外,组成的列表中还说明有一个HTML元素,但是最简的源码中却没有这东西。这是因为在HTML的规范中,一直存在“隐式标签”这样的概念,关于隐式标签,大致可以这么解释:
一部分元素,当满足特定的前提条件时,其开始标签或结束标签可以在源码中省略。在这种情况下,被省略的标签称为“隐式标签”。
需要注意的是,此处的省略指的是在源码中省略,而在最终成型的DOM树中,这个标签是存在的,因此才称为隐式标签。因此上面最简的源码结构,在生成DOM树后,其真正的结构是这样的:
<!DOCTYPE html>
<html>
<head></head>
<body></body>
</html>
最后,再总结一下XHTML中的一些规范:
- 因为是XML,所以为了表示这是一个HTML文档,必须有一个命名空间,其值为
http://www.w3.org/1999/xhtml
。
- 因为是XML,所以MIME type不能是
text/html
了,text/xml
、application/xml
、application/xml+html
都是比较好的选择。
- 因为是XML,必须有根元素,根元素为
<html>
,即<html>
的开始和结束标签不能省略了。
- 因为是XML,所有元素只要有了开始标签,就不能没有结束标签,或者自闭合。
- 因为是XML,所有元素都得严格遵守大小写,元素名称必须为小写。
因为是XML,文档变得严格了很多,也因为是XML,其可读性和规范性提高了不少。但最终,我们始终要在HTML的宽容性和XML的规范性之间找到最佳的平衡点,一味地追求极端始终是一个错误。
分享到:
相关推荐
PDF ISO 32000 PDF文档规范,版本PDF 1.7 英文版 PDF文档结构分析 PDF文档结构分析 PDF文档结构分析
数据结构(C语言描述)学习笔记、学习文档 数据结构(C语言描述)学习笔记、学习文档 数据结构(C语言描述)学习笔记、学习文档 数据结构(C语言描述)学习笔记、学习文档 数据结构(C语言描述)学习笔记、学习文档 ...
CMMI 5标准文档模板
html 、文档结构、快速了解文档结构,学习html
学习数据结构的很好文档,共享文档,共享快乐!
Oracle体系结构学习文档,对DBA来说是非常不错的资料,建议下载
给大家介绍了html5文档结构标签的相关知识,非常不错,具有参考借鉴价值,需要的的朋友参考下吧
HTML5文档基本结构.pdf 学习资料 复习资料 教学资源
了解js是什么,js能做什么,js基本程序结构
主要介绍了HTML5的文档结构和新增标签完全解析,需要的朋友可以参考下
HBuilder HTML5+ API 帮助文档,根据HBuilder H5+官方示例代码中的API页面打包而成,方便查看。不然每次都要打开示例代码,点击相应的功能页面打开对应的帮助文档,太麻烦啦,这样看着方便
vue-router官网文档学习
主要介绍了详解HTML编程的标记与文档结构,是HTML入门学习中的基础知识,需要的朋友可以参考下
面向机器学习的流式文档逻辑结构标注方法研究.pdf
J2EE和数据结构学习文档,还有数据结构SWF格式演示
概要设计文档标准,适合不同程度的学习者学习参考。是不可多得的参考资料。
html5 chm 手册 帮助文档,分享给大家,希望大家感受一下html5的新功能,他的出现对ria的影响众说不一。
Go语言标准库文档中文版,通过对Golang中文社区网站文档下载、分析、提取、整理后生成的chm文档,有结构,有索引,引用全部是本地生成的页面,方便快捷,希望能够给golang开发者提供便利。 因为文档太多,所以全部是...
里面有三个pdf文档,分别是:ieee 1471标准文档、ieee 1471 ppt和ieee 1471的总结。用词准确,语言简炼,我很喜欢读!
学习"文档/视图"结构的意义还不只于其本身,通过该架构的学习,一步步领略MFC设计者的神功奥妙,也将进一步增强我们自身对庞大程序框架的把握能力。 一个优秀的程序员是可以写出一个个优秀函数的程序员,而一个...