HTML、XML、XHTML 有什么区别
我来从HTML的历史谈谈他们3者的区别。
在HTML的早期发展中,W3C成立之前,很多标准的制定都是在浏览器的开发者们互相讨论的情况下完成的,比如HTML 2.0, 3.2直到4.0, 4.01,这些标准大部分都是所谓的retro-spec,即先有实现后有标准。在这种情况下,HTML标准不是很规范,浏览器也对HTML页面中的错误相当宽容。这反过来又导致了HTML作者写出了大量的含有错误的HTML页面。据说,时至今日web上99%的页面都含有HTML错误。
W3C随后意识到了这个问题,并认为这是互联网的一个基础性问题,应该加以解决。为了规范HTML,W3C结合XML制定了XHTML1.0标准,这个标准没有增加任何新的tag,只是按照XML的要求来规范HTML,并定义了一个新的MIME type,application/xhtml+xml。W3C的初衷是对这个MIME type浏览器要实行强错误检查,既如果页面有HTML错误,就要显示错误信息。但是由于已有的web页面中已经有了大量的错误,很多开发者拒绝使用新的MIME type。W3C不得已,在XHTML1.0的标准之后加了一个附录C,允许开发者使用XHTML语法来写页面,同时使用旧的MIME type,application/html,来分发页面。这个旧的MIME type不会触发浏览器的强错误检查。这就是我们今天看到的情况,很多网站宣称自己遵守XHTML 1.0标准,那只不过是说,他的页面中用了XHTML语法,但并不能保证完全没有错误。要验证XHTML有没有真正起效,需要查看web服务器使用哪种MIME type来分发页面的。
W3C随后在XHTML 1.1中取消了附录C,即使用XHTML 1.1标准的页面必须用新的MIME type来分发。于是这个标准并没有很多人采用。这种情况同样发生在尚未完成的XHTML 2.0身上,它要求强错误检查,于是没有人采用。XHTML的故事也告诉我们,有时候先有标准再来实现,是行不通的。
当 XHTML 1.0 和 XHTML 1.1 取得比较大的成功时,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 的 XHTML 2 标准很快就成为了一个笑话。 有了XHTML的教训,WHAT Working Group和W3C在制定下一代HTML标准,也就是HTML5的时候,就将向后兼容作为了一个很重要的原则。HTML5确实引入了许多新的特性,但是它最重要的一个特性是,不会break已有的网页。你可以将任何已有的网页的第一行改成,它就成也一个HTML5页面,并且可以照样在浏览器里正常的展示。 关于 XHTML 失势的原因其实很简单,因为网页开发比起学术与严谨性来说,更看重的是功能性与健壮性。 XHTML 是学术派的 W3C 开发的,并未给 HTML 带来新功能,只是用 XML 来规范 HTML,试图用 XML 来抹平 HTML 设计的一些缺陷(最重要的就是浏览器的不同解释——而导致浏览器解释不同的原因是 HTML 4 并未规定对于不合法的 HTML 页面统一的容错体系,这导致了不同浏览器各自采用了自己的容错机制,间接导致了同一个页面在不同浏览器上的不同渲染),这对于网页设计师来说,除了自己以前写的一些不大规范的 HTML 页面无法工作外,不能带来任何正面意义(对于整个业界的正面意义倒是有——就是让 HTML 更加规范和严谨——不过显然这样的“意义”太过空泛而无法被大多数设计人员接受)。 HTML 5 则是直接由站在HTML应用第一线的网络公司(Google、Adobe)和浏览器厂商(Moz、Opera、Apple)开发的,比起规范限制,采用了更容易被接受的做法:对 HTML 的容错方法做出统一定义,这样无论是什么浏览器,只要根据标准实现容错方法,即使网页出现缺陷,其渲染结果也是完全一样的。换句话说,网页设计师在迁移到 HTML 5 的时候,基本可以不做任何事情。以前即使存在一定缺陷的非标准网页也能正常而且同一地被渲染出来。在这之上,HTML5增加了非常多的应用特性,包括新tags、CSS 3、更多系统JS API等等,极大增强了网页app的功能,能被广泛接受和推广也是情理之中的事情。 说到这里再解释预测失误就很容易理解了,赞同 XHTML 的人是被 HTML 4 标准缺陷深受其害,觉得业界会向一个更标准更完备的方向前进;然后 HTML 5 不仅解决了标准缺陷的问题,还带来了更多更好的特性,当然就胜出了。
怎样理解 HTML 语义化
HTML语义化是什么?
语义化是指根据内容的结构化(内容语义化),选择合适的标签(代码语义化),便于开发者阅读和写出更优雅的代码的同时,让浏览器的爬虫和机器很好的解析。
为什么要语义化?
有利于SEO:搜索引擎的爬虫是读不懂无语义的span和div的,因此语义化标签能使爬虫抓取更多的有效信息。
CSS文件读取失败的准备:万一CSS文件挂了,语义化的HTML也能呈现较好的内容结构与代码结构。
方便其它设备的解析(如屏幕阅读器、盲人阅读器、移动设备)。
便于团队开发和维护。
我所理解的Web语义化有三个阶段
浏览器和W3C组织推出的如h1~h6、thead、ul、ol的HTML标签,用于在Web页面中组织对应的内容,如网页标题、表头、无序、有序列表,以达到更方便的协作及传播互联网内容。搜索引擎很好的利用了这些语义化标签抓取内容,又鉴于搜索引擎的巨大流量推荐,Web前端不得不考虑SEO,从而两者实现有益的循环,共同推进着语义化标签的使用。
但Web的发展超乎想象,起初定义的HTML语义化标签,不足以实现对Web页面各个部分的功能或位置描述,所以Web前端人员利用HTML标签的id和class属性,进一步对HTML标签进行描述,如对页脚HTML标签添加如id=”footer”或者class=”footer”的属性(值),以“无声”的方式在不同的前端程序员或者前后端程序员间实现交流。
W3C组织意识到了之前HTML版本的不足,推出的HTML5进一步推进了Web语义化发展,采用了诸如footer、section等语义化标签,弥补了采用id=”footer”或者class=”footer”形式的不足,以更好的推动Web的发展。
怎样理解内容与样式分离的原则
简单的说就是html(xhtml)和css的分离。尽量使用来外链css样式,这样的优势在于: 1. 利于后期维护,当有样式需要修改的时候只需修改相关css即可;2、减少代码冗余,一般来说一个网站的css可以大量复用,不需要对每个页面单独写。
有哪些常见的meta标签
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="description" content="不超过150个字符"/>
<meta name="keywords" content=""/>
<meta name="author" content="name, email@gmail.com"/>
<meta name="robots" content="index,follow"/>
文档声明的作用?严格模式和混杂模式指什么? 的作用?
声明位于文档中的最前面的位置,处于 标签之前。此标签可告知浏览器文档使用哪种 HTML 或 XHTML 规范。
所谓的标准模式是指,浏览器按 W3C 标准解析执行代码;怪异模式则是使用浏览器自己的方式解析执行代码,因为不同浏览器解析执行的方式不一样,所以我们称之为怪异模式。
浏览器解析时到底使用标准模式还是怪异模式,与你网页中的 DTD 声明直接相关, DTD 声明定义了标准文档的类型(标准模式解析)文档类型,会使浏览器使用相应的方式加载网页并显示,忽略 DTD 声明 , 将使网页进入怪异模式。
浏览器乱码的原因是什么?如何解决
乱码问题参考
常见的浏览器有哪些,什么内核
Paste_Image.png
网友评论