Vincent.Chan‘s Blog

          常用鏈接

          統(tǒng)計(jì)

          積分與排名

          網(wǎng)站

          最新評(píng)論

          XHTML:兩種語言的力量:可擴(kuò)展超文本標(biāo)記語言是用 XML 對(duì) HTML 4 的改良

          級(jí)別: 初級(jí)

          Sathyan Munirathinam, 軟件工程師, Aztec Software

          2002 年 7 月 01 日

          本文從實(shí)際角度對(duì) XHTML 進(jìn)行了研究,它是有效地結(jié)合 HTML 的簡單性和 XML 的可擴(kuò)展性的一種標(biāo)記語言。本文還涵蓋了 XHTML 各種風(fēng)格的基本特性并包括對(duì)語言和大量實(shí)際應(yīng)用程序的討論。

          作為一 名 Web 開發(fā)人員是項(xiàng)很艱苦的工作。您不僅必須每天避開流行瀏覽器引起的陷阱和缺陷,還必須至少留意可能(或不可能)對(duì)您的工作產(chǎn)生影響的眾多技術(shù)上的新發(fā)展。您 可能剛剛掌握了樣式表和 DHTML,而新的技術(shù)又要求您關(guān)注。您需要立刻學(xué)哪一個(gè)呢?現(xiàn)在可以放棄哪一個(gè)呢?隨著可擴(kuò)展超文本標(biāo)記語言(Extensible Hypertext Markup Language,簡稱 XHTML)的出現(xiàn),最終可能讓傳統(tǒng)的 HTML 馬放南山了。

          XHTML 概述

          XHTML 是 HTML 和 XML 的混合物,它是為網(wǎng)絡(luò)設(shè)備顯示(包括 Web 瀏覽器、PDA 設(shè)備和移動(dòng)電話)而特別設(shè)計(jì)的。2002 年 1 月 26 日標(biāo)志了 XHTML 1.0 作為 Web 標(biāo)記的正式 W3C 推薦的第二個(gè)生日。但是,XHTML 仍然要蹣跚學(xué)步,學(xué)著用微笑和大喊大叫來引起大多數(shù) Web 設(shè)計(jì)人員的注意。

          W3C 主管 Tim Berners-Lee 這樣評(píng)價(jià) XHTML:“XHTML 1.0 連接了現(xiàn)在的 Web 和將來的 Web …… 它為頁面和網(wǎng)站作者提供了進(jìn)入結(jié)構(gòu)化數(shù)據(jù) XML 世界的橋梁,同時(shí)仍然能夠保持與支持 HTML 4 的用戶代理的可操作性。"

          XHTML 是非常嚴(yán)格的標(biāo)記語言。它的規(guī)則很簡單,并且事實(shí)上,它的可擴(kuò)展性很小 ― 即,不能編寫您自己的定義來表示語言如何動(dòng)作;您必須遵循其規(guī)則。XHTML 1.0 采用 HTML 4.0 中引入的概念,這些概念在其生效之前,需要按結(jié)構(gòu)化的和方法論的行為進(jìn)行處理。

          XHTML 可以與級(jí)聯(lián)樣式表(CSS)一起使用以完成顯示目的。XHTML 還允許您將可擴(kuò)展樣式表(Extensible Stylesheet Language (XSL))用于轉(zhuǎn)換。通過使用這個(gè)基于 XML 的樣式技術(shù),您實(shí)際上可以將一個(gè)文檔從一種類型轉(zhuǎn)換成另一種類型 ― 例如,從 HTML 文檔轉(zhuǎn)換成 PDF 文檔。





          回頁首


          為什么要使用 XHTML?

          通常,您可能為新增功能或者因?yàn)橐呀?jīng)修正了以前版本的問題而將技術(shù)更新到新的版本。但就標(biāo)記功能而言,XHTML 是非常類似于 HTML 4 的副本,所以不要期望存在任何新奇的標(biāo)記。

          W3C 聲稱 XHTML 的主要優(yōu)點(diǎn)是 可擴(kuò)展性可移植性

          可擴(kuò)展性

          XML 文檔要求格式良好(元素嵌套正確)。使用 HTML,添加新的元素組需要更改整個(gè) DTD。在基于 XML 的 DTD 中,新的元素組只需要內(nèi)部一致并且格式良好,就可以添加到現(xiàn)有的 DTD 中。這極大地簡化了新元素集合的開發(fā)和集成。

          可移植性

          越來越頻繁地使用非臺(tái)式設(shè)備來訪問因特網(wǎng)文檔。在大多數(shù)情況下,這些設(shè)備不具備臺(tái)式計(jì)算機(jī)的計(jì)算能力,并且不象標(biāo)準(zhǔn)桌面瀏覽器那樣可適用于格式差的 HTML。實(shí)際上,如果這些非桌面瀏覽器沒有接收到格式良好的標(biāo)記(HTML 或 XHTML),它們可能根本無法顯示文檔。





          回頁首


          XHTML 文檔結(jié)構(gòu)

          XHTML 文檔由三個(gè)主要部分構(gòu)成:

          • DOCTYPE
          • Head
          • Body

          基本文檔結(jié)構(gòu)是:

          												
          														
          <!DOCTYPE ...>
          <html ... >
          <head> ... </head>
          <body> ... </body>
          </html>

          <head> 區(qū)域包含關(guān)于文檔的信息,如所有權(quán)、版權(quán)和關(guān)鍵字;而 <body> 區(qū)域包含要顯示的文檔內(nèi)容。

          清單 1 向您顯示實(shí)際中如何使用這個(gè)結(jié)構(gòu):


          清單 1. XHTML 示例
          												
          														
          1. <?xml version="1.0"?>
          2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
          Transitional//EN" "DTD/xhtml1-transitional.dtd">
          3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
          lang="en">
          4. <head>
          <title>My XHTML Sample Page</title>
          </head>
          5. <body bgcolor="white">
          <center><h1>Welcome to XHTML !</h1></center>
          </body>
          6. </html>

          第 1 行:由于 XHTML 是以 XML 文檔表示的 HTML,所以它必須在文檔的頂部包括初始 XML 聲明 <?xml version="1.0"?>

          第 2 行:XHTML 文檔必須由三組標(biāo)準(zhǔn)規(guī)則的其中一組來標(biāo)識(shí)。這些規(guī)則存儲(chǔ)在一個(gè)稱為“文檔類型聲明(Document Type Declaration (DTD))”的單獨(dú)文檔中,并且使用這些規(guī)則驗(yàn)證 XHTML 文檔結(jié)構(gòu)的準(zhǔn)確性。準(zhǔn)確地說,DTD 的目的是描述 XHTML 中允許的語言和語法。

          第 3 行:XHTML 文檔中的第二個(gè)標(biāo)記必須包括帶有由 xmlns=http://www.w3.org/1999/xhtml 屬性標(biāo)識(shí)的 XML 名稱空間的開始 <html> 標(biāo)記。XML 名稱空間標(biāo)識(shí) XHTML 文檔使用的標(biāo)記的范圍。它用來確保一個(gè) DTD 使用的名稱不與用戶定義的標(biāo)記或其它 DTD 中定義的標(biāo)記沖突。

          第 4 行:XHTML 文檔必須包括完整的頭部區(qū)域。這個(gè)區(qū)域包含開始 <head> 標(biāo)記和標(biāo)題標(biāo)記( <title></title> ),然后以結(jié)尾 </head> 標(biāo)記結(jié)束。

          第 5 行:XHTML 文檔必須包含開始和結(jié)尾 <body></body> 標(biāo)記。在這些標(biāo)記中,您可以放置傳統(tǒng)的 HTML 編碼標(biāo)記。要與 XHTML 符合,這些標(biāo)記的編碼必須是格式良好的。

          第 6 行:最后,使用結(jié)尾 </html> 標(biāo)記結(jié)束 XHTML 文檔。





          回頁首


          XHTML DTD

          在創(chuàng)建 XHTML 文檔時(shí),在該文檔的頂部聲明了它應(yīng)符合的 DTD。每個(gè) DTD 可能由一個(gè)稱為 正式公共標(biāo)識(shí)(Formal Public Identifier,簡稱 FPI)的唯一標(biāo)號(hào)識(shí)別。字 PUBLIC 后面的文字文本或引用文本是表示 W3C 的 XHTML 1.0 DTD 的 FPI。

          目前,有三種 XHTML 文檔類型:

          • Strict
          • Transitional
          • Frameset

          Strict DTD

          												
          														
          <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
          "DTD/xhtml1-strict.dtd">

          當(dāng)您想要真正清晰的標(biāo)記、避免表示上的混亂時(shí),將此與 CSS 一起使用。已經(jīng)從該語言中除去了幾個(gè)標(biāo)記(如 <center> ),甚至還除去了其它標(biāo)記的某些屬性(如 H1 標(biāo)記的 align 屬性)。

          Transitional DTD

          												
          														
          <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "DTD/xhtml1-transitional.dtd">

          當(dāng)您需要利用 HTML 的表示特性時(shí),使用它;您的許多讀者都沒有能理解 CSS 的最新瀏覽器。過渡的 DTD 支持大部分標(biāo)準(zhǔn)的 HTML 4 標(biāo)記和屬性。

          Frameset DTD

          												
          														
          <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
          "DTD/xhtml1-frameset.dtd">

          這使您能夠使用 HTML 框架將瀏覽器窗口分成兩個(gè)或更多框架。這個(gè) DTD 保存框架集定義。





          回頁首


          XHTML 驗(yàn)證規(guī)則

          XHTML 文檔 必須是格式良好的 XML。它必須符合基本 XML 語法:

          必須用小寫書寫標(biāo)記和屬性名稱。

          HTML XHTML
          <TD BGCOLOR="#ffcc33"> < td bgcolor="#ffcc33">

          元素必須嵌套;而不能交錯(cuò)。對(duì)于 XML 和 XHTML,您需要以逆序關(guān)閉標(biāo)記 ― 換言之:后開先關(guān)。

          HTML XHTML
          <p>Be <b>bold!</p></b> <p>Be <b>bold! </b></p>

          所有非空元素必須是關(guān)閉的。例如,對(duì)于 HTML,許多人使用 <p> 標(biāo)記分段。這個(gè)標(biāo)記設(shè)計(jì)用于標(biāo)記一段的開始和結(jié)尾(使用結(jié)尾 </p> 標(biāo)記)。這使它成為 非空標(biāo)記,因?yàn)樗挝谋尽?

          HTML XHTML
          First paragraph<p> Second paragraph<p> <p>First paragraph</p> <p>Second paragraph </p>

          受 影響的元素:<basefont>、<body>、<colgroup>、<dd>、< dt>、<head>、<html>、<li>、<p>、<tbody>、< thead>、<tfoot>、<th>、<td> 和 <tr>。

          必須終止空元素。所有空元素必須使用 XML 空標(biāo)記語法,在右括號(hào)前有一個(gè)結(jié)尾的正斜杠(例如, <br> becomes <br /> )。請(qǐng)注意元素文本后面的空格和結(jié)束定界符 /> 。這是為了與當(dāng)前瀏覽器兼容。

          HTML XHTML
          <hr> <hr />
          <br> <br />
          <input ... > <input ... />
          <param ... > <param ... />
          <img src="valid.gif"> <img src="valid.gif" />

          受 影響的元素:<area>、<base>、<br>、<col>、<frame>、 <hr>、<img>、<input>、<isindex>、<link>、< meta>、<option> 和 <param>。

          屬性值必須加引號(hào)。不再有 <img ... border=0> 了。現(xiàn)在,您需要給每個(gè)屬性加引號(hào),即使它是數(shù)字。

          HTML XHTML
          <img ... border=0> <img ... border= "0" />

          不能最小化屬性值對(duì)。不允許單獨(dú)屬性(也稱為最小化的屬性)。例如, <option selected> 不再有效了。而您必須使用 <option selected="selected">

          內(nèi)聯(lián)標(biāo)記不能包含塊級(jí)別標(biāo)記。例如,錨點(diǎn)標(biāo)記不能括起表。

          腳本編制元素引起了 XHTML 兼容性問題。XML 解析器將腳本解析成 XML 文檔,除非您將腳本封裝入 CDATA 塊中。因此,JavaScript 元素現(xiàn)在將類似于:

          												
          														
          <script type="text/javascript">
          <![CDATA[ alert("hello"); ]]>
          </script>

          這對(duì)于大多數(shù)的當(dāng)前瀏覽器來說,可能都有問題,因?yàn)樗鼈儾幌矚g CDATA 塊。目前,唯一的解決方案是從外部文件調(diào)用 JavaScript。例如:

          												
          														
          <script language="JavaScript" type="text/javascript" src="main.js"></script>

          對(duì)于服務(wù)器端程 序員,當(dāng)動(dòng)態(tài)修改 JavaScript 時(shí),這會(huì)產(chǎn)生問題。對(duì)您的 JavaScript 使用獨(dú)立的文件源會(huì)阻止您動(dòng)態(tài)地更改 JavaScript。因?yàn)?JavaScript 包括在客戶機(jī)端,所以服務(wù)器端不能接觸到它。當(dāng)使用 ASP、JSP 或 PHP 腳本編制修改 JavaScript 時(shí)使用腳本聲明的標(biāo)準(zhǔn) HTML 方法。這正是在使 JSP 或 ASP 100% 與 XHTML 兼容時(shí)最可能產(chǎn)生問題的地方。不過,請(qǐng)記住,目的并不是與 XHTML 100% 兼容,而是在可行的情況下開始結(jié)合 XHTML,使得需要時(shí)允許快速和簡單的過渡。那時(shí),應(yīng)該可以使用新的兼容瀏覽器,您將開始跨越到 100% 兼容性。





          回頁首


          代替 CHTML 和 WML 的 XHTML Basic

          對(duì)于想創(chuàng)建網(wǎng)站移動(dòng)版本的開發(fā)人員來說,根本問題是他們當(dāng)前必須用 HTML 將頁面格式化以便進(jìn)行桌面瀏覽,對(duì)于 WAP 設(shè)備,可以用無線標(biāo)記語言(Wireless Markup Language (WML));對(duì)于 iMode 設(shè)備可以用壓縮 HTML(Compact HTML (CHTML))。這已經(jīng)產(chǎn)生了一個(gè)新的行業(yè),致力于將現(xiàn)有的網(wǎng)站轉(zhuǎn)換成 WML 或 CHTML。WML 基于 XML,并且取代了快過時(shí)的手持設(shè)備標(biāo)記語言(Handheld Device Markup Language (HDML)),而 CHTML 是基于 HTML 的。雖然這些標(biāo)記語言很相似,但它們之間的區(qū)別使得 WAP 和 iMode 設(shè)備都不能看見 Web 頁面。而所有設(shè)備都將理解 XHTML Basic,并且它將成為一種通用標(biāo)記語言。

          可以獲取多種格式的完整 XHTML Basic 英文規(guī)范(請(qǐng)參閱 參考資料),這些格式包括 HTML、純文本、PostScript 和 PDF。可以預(yù)見 XHTML Basic 代替諸如 HDML 和 WML 的語言將是不可避免的。但是,重要的是記住 WML 和 HDML 還定義 操作和內(nèi)容。目前,這些在 XHTML 中還沒有等價(jià)定義。因此,至少在短期內(nèi),WML 和 HDML 將不會(huì)消失。看誰會(huì)最終勝出將很有意思。在某種程度上計(jì)劃支持所有這三種標(biāo)記語言。





          回頁首


          XHTML 中的未來工作

          XHTML 中仍在開發(fā)的一方面是 設(shè)備概要, 也稱為復(fù)合能力首選項(xiàng)概要文件(Composite Capability Preference Profiles (CCPP))。CCPP 允許諸如移動(dòng)電話之類的設(shè)備向 Web 服務(wù)器標(biāo)識(shí)自己、描述其限制并只下載其能夠顯示的信息。因?yàn)榭梢詫?XHTML 文檔分割成能夠被單獨(dú)下載的多個(gè)模塊,所以 CCPP 能起作用。

          W3C 正在與 WAP Forum 等合作開發(fā) CCPP。2001 年夏季,開始 XHTML 2.0 開發(fā),它是結(jié)合 HTML 和 XML 的最后一步。XHTML 2.0 是前瞻性的,因?yàn)樗菐追N XML 技術(shù)的結(jié)合體,例如 XLink、XPointer、XPath 和 XInclude ― 所有這些技術(shù)當(dāng)前處于開發(fā)過程中或者最近由 W3C 發(fā)布(請(qǐng) 參考資料中的路標(biāo))。





          回頁首


          結(jié)束語

          XHTML 開辟了 Web 的新領(lǐng)域,為作者提供了在其 Web 頁面上混合和匹配各種基于 XML 的語言和文檔的方法。它還為非傳統(tǒng) Web 訪問設(shè)備(從烤箱到電視機(jī))提供了框架以向 Web 服務(wù)器標(biāo)識(shí)它們自己及其能力,只要下載那些設(shè)備能顯示的信息。多虧有了 XHTML,您可以繼續(xù)使用您已經(jīng)熟悉和喜愛的 HTML 編寫。可能只需要稍微整理一下。我猜測(cè) XHTML 2.0(請(qǐng)參閱 參考資料)將具體地整理 HTML 標(biāo)記及其用法。

          總之,XHTML 簡化了可以讓各種新設(shè)備瀏覽的文檔的創(chuàng)建。另外,經(jīng)過少許學(xué)習(xí),您可以創(chuàng)建比以往功能強(qiáng)大得多的頁面。最后,XHTML 是通向 XML ― 因特網(wǎng)的未來語言的橋梁。





          回頁首


          參考資料





          回頁首


          關(guān)于作者

          author

          Sathyan Munirathinam 擁有 Madurai Kamaraj 大學(xué)計(jì)算機(jī)科學(xué)學(xué)士學(xué)位和計(jì)算機(jī)應(yīng)用碩士學(xué)位。作為 Aztec Software 的一名軟件工程師,他有兩年多的信息技術(shù)工作經(jīng)驗(yàn)。他的專業(yè)興趣是數(shù)據(jù)庫系統(tǒng)和聯(lián)網(wǎng),他的個(gè)人興趣是閱讀技術(shù)期刊,入侵網(wǎng)絡(luò)系統(tǒng)和打板球。可以通過 sat_hyan@yahoo.com與他聯(lián)系。


          posted on 2006-03-18 20:51 Vincent.Chen 閱讀(354) 評(píng)論(0)  編輯  收藏 所屬分類: AJAX

          主站蜘蛛池模板: 永靖县| 夹江县| 左云县| 陆河县| 兴义市| 新民市| 手游| 瓮安县| 拜泉县| 津市市| 邛崃市| 山阳县| 东莞市| 宜昌市| 抚远县| 扬中市| 读书| 桓仁| 肥乡县| 湖南省| 莱阳市| 巍山| 麟游县| 新乡市| 太仆寺旗| 秀山| 信阳市| 获嘉县| 丹凤县| 兖州市| 孝义市| 宁安市| 谢通门县| 左云县| 明光市| 舒城县| 安义县| 阳谷县| 肥东县| 原阳县| 太仓市|