如果你跟我一样,不是从上个时代走过来的前端,那么你大概率会被XML、XHTML、SGML这几个概念弄得晕头转向。
根据维基百科的定义:
HTML:超文本标记语言,是一种用于创建网页的标准标记语言。
XML: 可扩展标记语言,是一种标记语言。
XHTML: 可扩展超文本标记语言,是一种标记语言,表现方式与超文本标记语言(HTML)类似,不过语法上更加严格。
SGML: 标准通用标记语言,是现时常用的超文本格式的最高层次标准,是可以定义标记语言的元语言。
虽然这里的每一个字你都认识,但是合起来你就不知道他在说什么了,这就是我第一次读这几个定义的感受。
不过,标准里总有答案。
HTML 标准的第一章,没有太多技术性的内容,主要以全局性的概括和阅读引导为主。而本章的 第六小节 ,我认为是这一章最精彩的地方。他回顾了HTML的成长历史,讲述HTML如何从功能单薄的第一代,经过各种博弈和斗争,成长为如今羽翼丰满的HTML5。
而在这一小节里,XML、XHTML这些概念频繁出现。在阅读的过程中,我惊喜地发现,相比于生啃这些概念的教科书定义,如果从历史发展的视角,去看这一个个概念的诞生、发展、互动甚至衰落,我能够更加立体地感知到它们,脑子里原本模糊的概念一下子变得清晰起来。
本文我将会深入展开HTML标准第一章里的两个小节: 1.6 History 、1.8 HTML vs XML syntax ,配合一些扩展阅读,我力求给读者捋清楚:
- 「超文本」、「标记语言」等等到底指的是什么?
- HTML、XML、XHTML、SGML分别是什么?他们是基于什么需求诞生的?他们之间的关系又是怎么样的?现实当中又有哪些应用?
- HTML的精彩纷呈的进化之路。
文章目录
历史视角看HTML
1. 标记语言的出现
在计算机出现以前,如果想要出版一篇文章,大致的流程是这样的:
出版商拿到文章的原稿(manuscript)后,需要先进行排版。这个过程会由熟悉打印机操作的工人,以手写的方式在原稿的边缘添加标记,就跟小时候老师给你改作文差不多。经过标记后的稿件会交给印刷工人,印刷工人会根据这些标记对打印机进行操作,最后才打印出格式理想的文章。在当时,专门做这种标记工作的人也被称为「标记人(markup man)」。
而计算机出现以后,印刷工人的活可以交给计算机做了。标记人的沟通对象也从印刷工人换成了计算机,为了让计算机能够精准地按照标记人的想法进行排版,「标记语言」便诞生了。出生在21世纪的标记人会使用标记语言来指导计算机对文章进行排版,而那些专门使用HTML这个标记语言的标记人给自己换了一个更好听的名字,叫前端工程师。
2. SGML的诞生:标记语言的突破性变革
在很长一段时间里,市面上流行的标记语言主要有两种:
一种类似我们现在使用的markdown,把标记符号直接嵌入到文本当中,如用#
表示标题。计算机会从头到尾读取这些标记符号并根据提前约定好的规则来展示内容,这种标记方式也叫过程性标记(Procedural markup)。
另一种则像word一样,想要做到傻瓜式操作,所见即所得。这种标记语言一般都会隐藏在一个简单易用的图形化界面背后,你在编辑过程中所呈现的内容,就是最后打印出来的内容。这种标记方式称