發展歷史
XHTML最早叫做“HTML in XML”,是一種基於XML的超文本標記語言,也就是說,將以前用 SGML定義的
HTML改為用XML重新定義。從這個意義上講,XHTML實際上是XML的一種套用。表面上看,在XHTML中,其標記仍舊延用以往的HTML 的標記,各元素和屬性的名稱和用法也幾乎不變,只不過由於改為用XML定義,就必須嚴格按照XML語言規範來處理了。提起XHTML,就不能不先來看一下 XHTML的發展歷史。
XHTML的前身是大名鼎鼎的HTML,HTML作為在Internet/Intranet網上進行數據瀏覽和數據交換的一種先進的檔案格式規範,以瀏覽器為依託憑藉著其豐富而強大的功能打破了傳統的數據瀏覽方式,給人以耳目一新的感覺,也極大地推動了Internet的發展。但是,隨著HTML套用的不斷深入,其不足之處也逐漸暴露出來。首先,實際套用中的HTML相當不規範。雖然W3C早己制定出HTML的規範,但是出於商業動機.當今兩大Web瀏覽器軟體製作廠商Microsoft 和 Netscape為了搶占日益擴大的瀏覽器市場,紛紛在HTML中加入自己定義的非規範的標記,並在自己的瀏覽器中提供相應的特殊支持,旨在占領更大的瀏覽器市場份額,以達到左右HTML標準的制定並最終將競爭對手打垮的目的。這種不良競爭的結果,造成HTML標記的過度膨脹,大量與標準HTML不一致的標記充斥於Internet的大小角落,而且某些HTML標識符只能在Netscape Navigator上才能執 行,而另一些只在Internet Explorer上才是有效的。這 種情況給網頁設計人員帶來很大的麻煩。其次,隨著技術的飛速發展,新的Web瀏覽工具不斷被開發出來, 從小巧的掌上電腦到功能特異的能上網的手機再到最 近被炒得沸沸揚揚的數字機頂盒,網上瀏覽再也不必局限於桌上電腦了。據權威人士預測,到2002年,大約 75%的網頁將會通過非桌上型電腦來瀏覽。但是,我們不禁又問,到底現在的HTML標準是不是真得適合在各種非桌上型電腦中進行瀏覽呢?很不幸,回答是否定的,現在的HTML不能解決這個難題。另外,HTML只能利用現有的有限標記.而且大多數標記都沒有實際的含義,這使得它越來越不適應人們不斷增加的需求。在這種情況下,在各大知名廠商的壓力下,W3C組織於1998年底成立工作組,專門討論XHTML標準的制定。好在在此之前,W3C已正式推出XML1.0規範,這無疑為XHTML規範的制定奠定了強大的基礎。經過不斷的討論,該工作組於1998年12月5日提出第一個草案,並在隨後次年的2月24日、3月4日、5月5日分別公布了階段性草案。1999年8月24日,第一個建議標準正式推出。不過,還應指出的是,這並不意味著就一定能成為正式標準,事實上, XHMTL1.0的這份標準目前正處於激烈的討論中,爭議的焦點之一是名稱空間(namespace)的解釋問題。不過.現在總算有了一線希望,相信出路就在前方。
形成背景
一方面,缺乏語法規範性的HTML文檔。實際上,全球資訊網中的許多頁面都是規範性很差、語法很不嚴謹的HTML文檔,但仍然可以用Web瀏覽器打開。
另一方面,現今的軟體市場上存在著不同廠商提供的Web瀏覽器。國外流行的Web 瀏覽器有 Microsoft Internet Explorer、Mozil丨a Firefox 和 Google Chrome 等,國內有搜狗、 騰訊 Tencent Traveler、遨遊Maxthon、世界之窗Theworld和360安全瀏覽器等。如果設計和製作網頁的語言缺乏必要的規範、語法不嚴謹,運行在計算機上的不同Web瀏覽器將難以支持全球資訊網中數以億計的網頁。反之.如果使用統一規範的網頁設計和製作語言,使得 HTML文檔都具有規範和良好的結構,Web瀏覽器與網頁之間的適配性將得到大大增強。
XHTML的面世
為了規範網頁設計和製作語言,
W3C於2000年推出了XHTML。
目前,較流行的XHTML 1.0版本有以下三種。
(1)XHTML1.0 Strict(嚴格版)。嚴格版是根據HTML 4.01 Strict改編的。與 HTML 4.01 Strict —樣,在XHTML 1.0 Strict中不能使用表現性元素或屬性,例如 center、font、s、strike 和 u 等元素以及 align background 和 bgcolor 等屬性。
(2)XHTML 1.0 Transitional(過渡版)。過渡版是根據HTML 4.01 Transitional改編的.與HTML 4.01 Transitional—樣,可以使用一些在Strict版本中禁用的表現性元素或屬性。
(3)XHTML 1.0 Frameset(框架版)。框架版是根據HTML 4.01 Frameset改編的.允許在網頁中定義框架。
在上述三種XHTML 1.0版本中,XHTML 1.0 Transitional規定了XHTML的基本語法。XHTML 1.0 Strict不僅遵循XHTML的基本語法規定,而且不允許使用表現性元素或屬性.在XHTML 1.0 Transitional和 Strict 的基礎上,XHTML 1.0 Frameset 允許在網頁中定義框架。
總之.XHTML是一種增強型的HTML,是語法更嚴謹、元素更純淨的HTML版本. XHTML有助於編寫良構(Well-structured)的HTML文檔。這些HTML文檔可以很好地工作於IE、Firefox和Chrome等各種品牌的Web瀏覽器,並且能夠向後兼容。此外,XHTML還具有良好的可擴展性和靈活性,不僅支持台式計筧機和攜帶型電腦而且支持iPad、iPhone等手持移動通信設備.能夠適應未來網路套用的更多需求。
語法規定
HTML的語法比較鬆散.網頁設計和製作者使用起來比較方便。但對Web瀏覽器來說.網頁設計語言的語法越鬆散.處理起來卻越困難。因此,W3C在制定XHTML規範時,要求編寫HTML文檔時必須遵循更加嚴格和規範的語法。
(1)必須關閉打開的標籤。
在HTML中,允許某某些非空元素只有開始標籤,而可以沒有結束標籤。例如,li元素的開始標籤<li>可以不用結朿標籤</li>來關閉.但這在XHTML中是不允許的。XHTML規定,必須關閉打開的標籤,換言之,開始標籤必須有相應的結束標籤。
對於br和img等空元素(即沒有結束標籤的元素要在開始標籤中的元素名後面使 用“/”來關閉。例如,<br>必須寫為<br/>,<img…>必須寫為<img…/>。
(2)元素名和屬性名都必須小寫。
在HTML中,標籤中的元素名和屬性名可以小寫,也可以大寫。但與HTML不同, XHTML是大小寫敏感的(Case Sensitive),元素名和域性名必須小寫,並且不允許大小寫夾雜。例如.在HTML中允許<HTML>、<TITLE>,但在XHTML只允許<html〉、<title>。
(3)元素以及標籤之間都必須正確嵌套。
XHTML規定,如果在關閉一個標籤之前又打開另個新標籤,則必須首先關閉新標籤,然後才能關閉前一個標籤。換言之,關閉後打開的標籤之後,才能關閉先打開的標籤。
例如.在 XHTML中,不允許<p>Here is an emphasized<em>keyword. </p> </em>,只允許 <p>Here is an emphasized <em>keyword. </em></p>。這樣,p 元素才能正確嵌套em元素。
正確嵌套元素以及標籤,外以形成良構的HTML文檔。
(4)元素的屬性值必須用雙引號("")括起來。
在HTML中,當屬性值是數字時.可以不用引號;但是在XHTML中,所有的屬性值 (包括數字)必須用雙引號括起來。
例如,在 HTML 中,允許<table bgcolor=#DDEEFF border=10>;但是在XHTML 中,只允許<table bgcolor="#DDEEFF"border="10">.
(5)不能在注釋內容中使用“--”。
“--”只能出現在XHTML注釋的開頭和結朿,而在注釋內容中不能再使用。例如,在XHTML中,下面的代碼是無效的:
<!--這裡是注釋----------這裡是注釋-->
(6)圖像標籤必須有說明文字。
在XHTML中.每個圖像標籤都必須使用alt屬性添加說明文字。例如,在XHTML 中,以下代碼是有效的:
<img src ="ball.jpg" alt = "large red ball" title = "large red ball"/>
注意:為了兼容Firefox渕覽器和IE瀏覽器,對於圖像標籤,儘量採用alt和title雙標籤!
(7) 用id屬性替代name屬性。
例如,在XHTML中,不允許<img src="picture.gif" name="picturel"/>,只允許<img src= "picture.gif" id= "picturcl"/>。
注意:為了使HTML文檔兼容低版本的Web瀏覽器.可以同時使用name和id屬性, 並使這兩個屬性的值相同。例如,<img sre ="picture.gif" id="picturel" name="picture!"/> 。
(8)必須給每個屬性賦一個值.且不能省略屬性值。
在XHTML中,每個屬性都必須有一個值,沒有值的就重複本身。例如:
<input type = "checkbox" name="shirt" value= "medium" checked>
必須修改為:
<input type= "checkbox" name = "shirt" value= "medium" checked= "checked">
遵循上述XHTML語法規定的HTML文檔稱為良構的HTML文檔。設計和製作網頁時如果遵循上述XHTML語法規定,HTML文檔就能夠被大部分常見的Web瀏覽器正確並快速地編譯。在以上語法規定中,有的看上去比較奇怪,但這一切都是為了使網頁設計語言有一個統一和唯一的標準,以便使用各種Web瀏覽器都能正常地打開HTML文檔並流暢地顯示網頁。
由此可見,從HTML過渡到XHTML,最大的變化在於HTML文檔必須是良構的。
此外,在Strict類型的XHTML文檔主體,還必須遵循以下語法規範。
(1)文本內容不能直接出現在主體中。
例如,以下代碼的語法是不規範的:
< body > Hello, World! </body>
因為文本內容“Hello, World!”直接出現在body元素中。
在Strict類型的XHTML文檔主體,文本內容必須出現在p、ul、h1、h2、h3、h4、h5或h6等塊級元素內.或者出現在這些塊級元素的子元素內。
按照本條語法規則.以下代碼的語法則是規範的:
< body><p> Hello, World! </p></body>
或者
< body >< p >< em > Hello, World! </em ></p ></body >
(2>行內元素必須嵌套在塊級元素中, 例如,以下代碼的語法是不規範的:
< body ><em> Hello, World! </em></body>
因為行內元素em直接出現在body元素中。
在Strict類型的XHTML檔案中,a、em、img、strong等行內元素必須嵌套在p、h1、h2、 h3、h4、h5或h6等塊級元素內,而不能直接出現在body元素內。
按照本條語法規則,以下代碼的語法則是規範的:
< body>< p>< em> Hello,World!</em></p></body>
或者
< body>< p>< strong> Hello, World!</strong></p></body>
或者
< p>< img src = " · ·/ch02/2 - 4.gif ” alt ="圖像說明文字"/></p >
XHTML文檔的基本結構
使用XHTML設計和製作網頁,其中的代碼同樣保存在HTML文檔中,即檔案的擴展名仍然是htm或html。但由於遵循更加規範的語法規定,特將使用XHTML編寫的HTML文檔稱為XHTML文檔。
使用XHTML設計和製作網頁時,XHTML文檔必須具有一定的基本結構。
XHTML文檔的基本結構包括以下幾部分:
(1)首先必須使用<! DOCTYPE...>進行檔案類型定義(Document Type Definition, DTD),以聲明當前XHTML文檔所遵循的版本。該XHTML文檔中的DTD聲明,XHTML文檔遵循XHTML 1.0 Transitional的規範及語法規定。如果需要聲明XHTML 文檔遵循XHTML 1.0 Strict的規範及語法規定,在DTD部分則需使用如下代碼:
<! DOCTYPE html PUBLIC " - //W3C//DTD XHTML 1.0 Strict//EM" "http://www.w3.org/TR/xhtmll/DTD/xhtmll - strict.dtd">
注意:DTD並非XHTML文檔中的元素,換言之,<! DOCTYPE->並不是一個標籤。
(2)必須使用唯一的html元素作為XHTML文檔的根元素,並且其他所冇元素及標籤都必須正確嵌套在<html>和標籤對之間。
(3)在XHTML文愾中,必須將html元素的xmlns屬性值設定為“httP://www. w3. org/1999/xhtml”,以指定整個文檔所使用的命名空間(Namespace).
(4)在XHTML文檔頭部使用meta元素將編碼方式設定為中文簡體,具體使用如下 代碼:
< meta http - equiv = "content - type" content = "text/html; charset = gb2312">
(5)html元素中必須包含一個head元素和一個body元素,並且head元素中必須包含 —個title元素。
XHTML的優點
XHTML之所以能成為建議標準,就是因為它具有一系列優點:
可伸縮性
XHTML可以根據用戶的需要和瀏覽器的處理能力選用合適的DTD,單是從這一點來看,就充分體現了一種時下比較流行的理念——“科技以人為本”。XHTML1.0的標準中定義了三個DTD,它們分別是:嚴格式(Strict)http://www.w3.org/TR/xhtmll/strict、過渡式(Transitional)http://www.w3.org/TR/xhtmll/transitional、分幀式(Frameset)http://www.w3.org/TR/xhtmll/frameset,每一種都有不同的套用。
可擴展性
正如XHTML字面上所體現的那樣, XHTML具有一定的擴展性,這要歸功於名稱空間 (namespace )的引入。有了名稱空間,用戶可以在 XHTML文檔中任意添加自己需要的標記,兩個比較典型的例子是:MathML和SVG。MathML和SVG作為XML的一種具體套用,可以靈活地嵌入XHTML 檔案中.將使得XHTML增色不少。現在,前者己經成為W3C正式推薦標準,而後者也即將成為建議推薦標準。
可重用性
XHTML的推出原本是作為XML的過渡標準,因為
XML尚處於一個不斷完善階段,還有大量的工作需要去做,因此短時間內將很難推出一個完全支持XML的瀏覽器,即使聲稱支持XML的Internet Explorer5.0目前也只是提供部分的支持,而在這過渡期內,運用XHTML完全可以達到既定目標。另一方面,XHTML從根本上講,也是一種規範的XML,即使將來XML徹底替代了 XHTML,XHTML文檔也不會為XML瀏覽器或其它基於XML的工具所不容。
XHTML及Web瀏覽語言展望
為了很好地發揮XHTML的優點,滿足各種不同 的需要,還有許多工作要做。目前,W3C正在緊鑼密鼓 地進行XHTML相關標準的制定工作。有關的標準有:HTML的模組化、子集與擴展性、文檔配置檔案(Document Profiles )。屆時,隨著 XHTML1.1 規範的推出,XHTML文檔的編輯者和瀏覽器能按實際需要去套用不同組合的DTD。那么,今後Web瀏覽將全採用什麼語言呢?在這裡,我們不得不提到XML,XML 是一種目前在業內廣為流行的新興標記語言,且大有成為Web瀏覽技術上的明日之星的趨勢,但是不是說XML馬上就可成為取代HTML的後繼者呢?不是的,XML的確有許多優勢,但它仍存在一些短時間內無法克服的缺點,XML還有很長的路要走,而XHTML做為對HTML 的擴展,其優勢使其成為HTML的理想繼承人,現在已經有針對XHTML套用的支持,MathML和SVG 就是很好的例證。因此,我們預測在不久的將來,XHTML將會成為瀏覽器中的核心頁面語言,直至XML技術的真正成熟之日才會逐漸退出歷史舞台。