HTML 5 + XHTML
xhtml是用xml的规则重新规范html,xhtml是xml的一个子集,所以具备了xml的特性。
html就是超文本标记语言
无法说二者哪个更好,或者更好用,各有优劣。
目前html5比较被看好。尽管下一代xhtml遥遥无期,但它的出现和应用也曾拯救了不少人啊,不然谁在乎前端代码啊?
XHTML 就是符合 XML 标准的改进型 HTML,对语法的苛刻程序和其它基于 XML 的一样。
、XHTML 1.0 Strict 的 <a> 标签没有 target 属性,郁闷了。。。。现在觉得 HTML5 挺不错的,可以写得很简洁很语义化。
一个简洁版本
strict html 4.01 标准
<html> 必须是root元素
<head>和<body> 是 <html>中一定有且只有的元素
<head> 必须有 <title>, <meta>和<style>可选, 他们只能在<head>里
<body> 里只能有 block元素
block元素不能放在inline元素里
block元素不能放在<p>里
<ul>和<ol>中只能有<li>元素,但<li>里可以放其他,包括block元素
<blockquote>中只能放block元素
xhtml 1.0 标准
html元素需要有xml相关属性
元素名必须是小写字母
元素属性用"包围,不能为空值
在内容里不能有&, 需要转义,包括其他特殊字符<>,即特殊字符都需要转义
空元素以 />结尾
xhtml与html严格意义上其实没什么区别:
xhtml1.0的开发实际上是作为html4.01与xml2.0的一个过渡的网页版本而存在的,因为xml的解析语法过于苛刻,简单一句话就是:(xhtml1.0)只要网页中出现一处错误,则浏览器停止解析。
几年前,按照w3c的计划xhtml1.0的下一个版本来应该是xhtml 2.0的,但因为xhtml 2.0的语法苛刻程度已经是xml的苛刻程度了,但是xml违背了网页设计的一个基本原理,即“发送时要保守,接收时要开放。”,于是xhtml2.0项目最终流产,被html5所取代。
其实不管你写html还是xhtml,都要注意代码实现的标准性和优雅性,但当你通过这个网址(http://validator.w3.org/)来检验你写的代码的规范性。
如果你的文档声明的是xhtml的话,该网页就会提示你许多你没有注意到的代码错误,尽管这些错误有时会被浏览器自动纠正,不会造成事实上的的呈现错误。
html的文档声明网页提示的错误要少很多。
HTML4,HTML5,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制定了XHTML 1.0“标准。
这个标准没有增加任何新的tag,只是按照”XML的要求来规范HTML“,并定义了一个新的MIME type,application/xhtml+xml。
W3C的初衷是对这个”MIME type浏览器要实行强错误检查“,既如果页面有HTML错误,就要显示错误信息。但是由于已有的web页面中已经有了大量的错误,很多开发者拒绝使用新的MIME type。
W3C不得已,在XHTML 1.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的教训,WHAT Working Group和W3C在制定下一代HTML标准,也就是HTML5的时候,就将“向后兼容”作为了一个很重要的原则。
HTML5确实引入了许多新的特性,但是它“最重要的一个特性”是,“不会break已有的网页”。
你可以将任何已有的网页的第一行改成<!DOCTYPE html>,它就成也一个HTML5页面,并且可以照样在浏览器里正常的展示。
HTML4是目前互联网上使用最广泛的标准,成于1999年左右。
HTML5是很有野心的下一代标准,因为4之后已经有十几年的时间了,这十几年也是互联网飞速发展的时期,因此很多应用场景,4不支持或者使用基于4的技术体系实现起来很费劲,需要插件,walkaround等等。
HTML5已经远远超越了标记语言的范畴,其背后是一组技术集。
最基本的就是更富语义的标签,以便更好的被机器识别;
Canvas+WEBGL等技术,实现无插件的动画以及图像、图形处理能力;
本地存储,可实现offline应用;
websocket,一改http的纯pull模型,实现数据推送的梦想;
MathML,SVG等,支持更加丰富的render;
我觉得HTML5的好处还在于对跨浏览器方面的推动,因为4时代,由于语言本身的弱,导致了浏览器各自为政扩展开发了很多特性,导致浏览器之间不兼容,跨浏览器的应用开发是一件十分令人头疼的事情。
HTML5是标准与实现同步在推,w3c声明,将来标准完成之时,就至少会有两种浏览器能够完全支持标准,目前来看,情况还比较乐观。
XHTML和HTML4最大的不同是实现了结构与表现的分离,网页文件体积变小,打开速度变快,样式修改更方便。