欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  web前端

多年前对 XHTML 和 HTML5 的预测为什么错的这么离谱?

程序员文章站 2022-05-07 15:26:01
...
在Head first 系列书中的htlm和css书中看到这些话:(中文版的出版日期是08年,但对xhtml的预测应该是在8年前就已经出错了)这种预测错误原因有哪些??既然现在大多数网站用的是html5,是不是就可以直接学html5不用管低版本的html了??
另外看到,head first html5专门有一页写的是感谢Jobs的话,Jobs对html5的贡献体现在哪些方面??html5的兴起和智能 手机的兴起有什么关系??
To Steve Jobs, who hyped HTML5 to the point where this
book should sell a zillion copies...
And to Steve Jobs, because he’s our hero.

回复内容:

嗯,那个时候正是W3C自信心爆棚的时候,整个业界都认为W3C联盟战胜了IE,IE受到越来越多浏览器的挑战,如Chrome、Firefox、Webkit,终于,内容提供商开始倾向于提供非IE兼容的内容,IE浏览器的绝对市场垄断地位被打破了。人们都以为这是民众的胜利,标准的胜利,W3C的胜利。
同时,XML的成功也冲昏了W3C HTML工作小组的头脑,越来越多的协议选择XML作为底层接口。让我们全部都使用XML吧,W3C就这么愉快的决定了。

但很显然的,W3C真是图样图森破。

标准,永远是掌握在浏览器厂家手里的。事实上,IE的市场份额只是被WebKit核心蚕食了而已。市场标准只是从一个寡头手里到了另一个寡头手里。一意孤行的XHTML 2.0竟然大胆的与原先的HTML不再兼容,浏览器厂商终于怒了,Mozilla和苹果牵头,WHATWG小组成立。失去了厂商支持的W3C的XHTML2标准很快就成为了一个笑话。 首先要说明您提问中说到的“现在大多数网站用的是html5”并非事实。基于低版本IE兼容性顾虑,大多数网站其实并未使用HTML5独有的一些特性(比如新的tags),考虑到您以后可能会遇到处理兼容性问题的状况,对哪些特性是HTML5存在而HTML4不存在有一定程度的认知也是必要的,所以HTML4也应该学习一下。

然后关于XHTML失势的原因其实很简单,因为网页开发比起学术与严谨性来说,更看重的是功能性与健壮性。
XHTML是学术派的w3c开发的,并未给HTML带来新功能,只是用XML来规范HTML,试图用XML来抹平HTML设计的一些缺陷(最重要的就是浏览器的不同解释——而导致浏览器解释不同的原因是HTML4并未规定对于不合法的HTML页面统一的容错体系,这导致了不同浏览器各自采用了自己的容错机制,间接导致了同一个页面在不同浏览器上的不同渲染),这对于网页设计师来说,除了自己以前写的一些不大规范的HTML页面无法工作外,不能带来任何正面意义(对于整个业界的正面意义倒是有——就是让HTML更加规范和严谨——不过显然这样的“意义”太过空泛而无法被大多数设计人员接受)。
HTML5则是直接由站在HTML应用第一线的网络公司(Google, Adobe)和浏览器厂商(Moz, Opera, Apple)开发的,比起规范限制,采用了更容易被接受的做法:对HTML的容错方法做出统一定义,这样无论是什么浏览器,只要根据标准实现容错方法,即使网页出现缺陷,其渲染结果也是完全一样的。换句话说,网页设计师在迁移到HTML5的时候,基本可以不做任何事情。以前即使存在一定缺陷的非标准网页也能正常而且同一地被渲染出来。在这之上,HTML5增加了非常多的应用特性,包括新tags, CSS3, 更多系统JS API等等,极大增强了网页app的功能,能被广泛接受和推广也是情理之中的事情。
说到这里再解释预测失误就很容易理解了,赞同XHTML的人是被HTML4标准缺陷深受其害,觉得业界会向一个更标准更完备的方向前进;然后HTML5不仅解决了标准缺陷的问题,还带来了更多更好的特性,当然就胜出了。

说到Jobs的话,其最伟大的贡献就是Webkit了。在IE for Mac被微软抛弃之后,Apple只好自己拿起KHTML来改造成Webkit并开发了Safari。Webkit最重要的应用Chrome和Safari Mobile对于推动HTML5的流行起到了功不可没的作用。在chrome快速演化的压力下,才促使Firefox和IE也开始提高更新速度;而Safari Mobile则成为了移动HTML领域的事实标准,对于HTML进入移动领域起到了决定性的推动作用。 需要了解的概念
XHTML的意愿就是让人用写XML的严谨态度去写HTML,即 标签必须闭合、属性值必须用双引号等。具体的可以搜知乎上的其他问题。
我们通常所说的HTML5(广义)包含了HTML5本身、CSS3、DOM的扩展、地理API、Web Socket等。
(狭义)HTML5就是对HTML4的一个修订和扩充:[1]
  1. 增加了对Canvas、Video和Audio等标签的支持,多媒体和绘画、甚至动画的展现能力得到极大的增强
  2. 增加了一些更具语义的标签或接口,例如aside,header,footer等
  3. 修改或废弃了一些HTML标签和语义,如新表单特性,Marquee,frameset等
  4. 建议将颜色/尺寸/对齐排版相关的属性都移到CSS中,HTML5主要负责网页的布局
其中,Canvas、video、audio等标签要配合JS才能发挥出全部价值。

为什么错的这么离谱?
因为当年根本没有预料到今天互联网的发展。HTML 4.01是1999年发布的,看看当年的网页是什么样子 [2],多数是文本,配合少量图片。根本无法想象谷歌地图、新浪微博这种应用。
后来网速提高之后,出现了交互的网页,但复杂的交互(比如在线视频、文件上传实时显示百分比)只能用FLASH实现 [3],Ajax是后来的事情了。
但是,2005年初,许多事件使得Ajax被大众所接受。[4]
互联网的需求放在这里,但是只有Flash能实现,有人[5] 就提出要搞HTML5来补充。
此外,FLASH毕竟是个插件,在类Unix系统上性能很差,电脑上还凑活,但是放到手机上(乔帮主)就不能忍了。
另外,增加的更具语义的标签是基于搜索引擎实践的,新表单特性是基于目前表单验证都需要写JS来实现。

Jobs对html5的贡献
因为iPhone(iPad)用的人多,用的人大多是高端(有钱)用户,网站(产品经理)都想要支持的。但是iOS不支持flash,那就必须用html、js技术来实现,相当于迫使网站转向/支持HTML5。

html5的兴起和智能手机的兴起有什么关系?
(我觉得)基本没有关系。就算有,也只跟iOS有关系,Android只是搭便车。Android的浏览器是前端继IE6之后的又一个噩梦,Android 4.0.4 才开始不支持Flash。(继续安卓黑)

题外话
题主不要看这种垃圾书

------参---考---文---献------
1. HTML5的定义
2. [网易]带您遨游中文网络世界
3. Adobe Flash
4. AJAX
5. Growing pains afflict HTML5 standardization 08年的理念是Server端generate所有页面,做法就是把UI相关对象直接序列化成HTML/XHTML。XHTML由于是XML,最容易序列化,所以被认为有前景

10年之后的理念是Server端只提供JSON等纯数据,前端由JavaScript装配UI。在这种情况下,已经不需要Server管UI了,也就不需要序列化HTML/XHTML了;而且应用对浏览器内置的JavaScript API要求大大增强。所以HTML5(实际上是主要升级了JavaScript API)变得更有价值了 乔帮主在iOS设备上不支持Flash,而选择了HTML5.于是这个技术很多人使用了,XHTML虽然根正苗红,但是Chrome,Safari,IE等都往HTML5走,于是HTML5成为事实上的标准。后来XHTML就不搞了,2个小组合并 我一直觉得html就应该跟python2和3一样,想用html5,就必须忍受一些不好的东西被删掉从而重新学习的痛苦。搞得现在不论不类的,太蠢了。

但是python3的问题是,比起python2差距太小,没有吸引力…… 漫画:混乱的标记语言XHTML2/HTML5(附中文版翻译)
[浅谈 演示] 你所不知道的HTML 因为你看的版本太老了。HF的HTML(特指4)出了两个版本,你看的是最早的那个版本。第二版里面好像就没有这个说法了。 只是这本书错的离谱,包括我在内的一些从业者对xhtml1.1的评价是这样的:
“这是一个标准制定者走火入魔的典型例子”

以下引自blabla.cn 07年的一篇文章
文章地址:HTML 和 XHTML 区别
XHTML 标准的前途
从标准制定者的初衷看,制定 XHTML 标准是试图把 HTML 规范成为严格的 XML 格式,这样无可避免的会导致一个结果,就是从 HTML 到 XHTML 的升级导致标准的容错能力降低了。把自己的网页源文件写得严格一点当然是好事,但是一个标准不可能去要求浏览器降低自己的容错能力。
XHTML 1.0 标准是兼容 HTML 4.01,是个不错的协议,可以让开发者在编写代码的同时通过一些工具来检查代码的合法性,虽然对于用户而言,制作出来的网页和 HTML 4.01 相比实在没有什么不同。对于你写新的网页来说,使用 XHTML 1.0 还是一个不错的选择。
XHTML 1.1 标准要求浏览器不再支持原先的容错能力,这是一个标准制定者走火入魔的典型例子,这个标准从学术上说非常纯净,但是对于浏览器而言,则是个呆板、笨拙、不可理喻的标准。所以目前所有由人类开发的浏览器都没有遵照所谓纯净的 XHTML 1.1的标准,你的代码只要浏览器能读懂,他都会很好的显示出来,而不跳出弹框报错。
从发展的趋势来看,一个标准没有浏览器服从,等于是没有意义的标准。从浏览器的实现角度来看,新的协议只能在原来 HTML 的基础上扩大能力增加容错,而不能缩小了能力减少容错。所以新的协议中,只有扩大能力增加容错的部分会被采纳,而其他部分都仅仅是纸上谈兵而已。