未來的Web標準:HTML 5
W3C在過去的幾年里一直在冬眠。HTML最后一次更新是在1999年,XHTML上一次更新是在2002年。
WHATWG(Web Hypertext Application Technology Working Group)成立于2004年,由Google, Mozilla, Apple和Opera發起,旨在開發以實際應用為藍本的新一代Web標記標準。他們推出了一個HTML5規格草稿試圖取代老一代的HTML和XHTML。
根據W3C最近一次廣受觀注的投票結果,HTML5將成為事實的超文本標記語言未來標準,而不是以XML和可擴展性著稱的XHTML 2。該投票基于WHAT-WG向W3C提出的以由Web Application 1.0和Web Forms 2.0構成的HTML5為基礎進一步開發和完善Web語義語言的申請。
W3C已確定將:
- 接受WHATWG的HTML 5,并以此為工作藍本,由W3C的HTML工作組繼續完善和開發;
- 發布名為HTML 5的HTML版本,而非XHTML2。
在持反對意見的委員中,相當一部分是考慮到新的HTML5與目前標準如XForms等的關系問題。根據官方公布的投票結果,這些問題都已被認真納入新標準的開發過程,不會成為任何障礙。
與慣常的W3C工作組不同,全新的HTML5工作組將全部由會對新標準的實施起關鍵作用的大公司的代表擔任:
與XHTML 2.0對HTML進行徹底重構不同的是,WHATWG希望漸進地改進HTML 4和XHTML 1.0。WHATWG規范的一些初步成果已經在瀏覽器中實現,比如canvas。
在W3C的草稿《HTML 5 differences from HTML 4》中,我們可以看到HTML 5的一些主要改進。我們重點關注一下語法的變化和被從現有HTML/XHML中移除的內容。
1. 語法
HTML 5可以使用HTML的語法來定義:
<html>
<head>
<meta charset="UTF-8">
<title>Example document</title>
</head>
<body>
<p>Example paragraph</p>
</body>
</html>
也可以使用XML語法:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Example document</title>
</head>
<body>
<p>Example paragraph</p>
</body>
</html>
2. 語言
2.1 內容模型
div,li等元素的使用將更為嚴格。這些元素將不能同時包含塊級元素和行內元素。例如,下面的代碼是合法的:
<em>


</div>
<div>
<p><em>

<p>

</div>
而下面的代碼是不合法的:
<em>

<p>

</div>
這樣有利于根據元素用于描述頁面的結構還是結構內的語義來明確元素的級別。
另外,tfoot元素可以直接出現在thead之后。
2.2 移除的元素
- 純表現的元素:basefont,big,center,font, s,strike,tt,u;
- 對可用性產生負面影響的元素:frame,frameset,noframes;
- 產生混淆的元素:acronym ,applet,isindex,dir。
2.3 移除的屬性
- a,area,button,input,label,legend和textarea元素的accesskey屬性;
- link和a元素的rev和charset屬性;
- a元素的shape和coords屬性;
- img和iframe元素的longdesc屬性;
- link元素的target屬性;
- area元素的nohref屬性;
- head元素的profile屬性;
- html元素的version屬性;
- map,img,object,form,iframe,a元素的name(use id instead)屬性;
- meta元素的scheme屬性;
- object元素的archive,classid,codebase,codetype,declare和standby屬性;
- param元素的valuetype和type屬性;
- script元素的charset和language屬性;
- table元素的summary屬性;
- td和th元素的headers,axis和abbr屬性;
- td元素的scope屬性;
- caption,iframe,img,input,object,legend,table,hr,div,h1,h2,h3,h4,h5,h6,p,col,colgroup,tbody,td,tfoot,th,thead,tr和body元素的align屬性;
- body元素的alink,link,text和vlink屬性;
- body元素的background屬性;
- table,tr,td,th和body元素的bgcolor屬性;
- table,img和object元素的border屬性;
- table元素的cellpadding和cellspacing屬性;
- col,colgroup,tbody,td,tfoot,th,thead和tr元素的char和charoff屬性;
- br元素的clear屬性;
- dl,menu,ol和u元素的compact屬性;
- table元素的frame屬性;
- iframe元素的frameborder屬性;
- iframe,td和th元素的height屬性;
- img和object元素的hspace和vspace屬性;
- iframe元素的marginheight和marginwidth屬性;
- hr元素的noshade屬性;
- td和th元素的nowrap屬性;
- table元素的rules屬性;
- iframe元素的scrolling屬性;
- hr,input和select元素的size屬性;
- all elements with the exception of font元素的style屬性;
- li,ol和ul元素的type屬性;
- col,colgroup,tbody,td,tfoot,th,thead和tr元素的valign屬性;
- hr,table,td,th,col,colgroup,iframe和pre元素的width屬性。
為了使我們現有的代碼更容易地向未來的標準遷移,我們應該盡量不使用這些元素和屬性。
參考: