XHTML:兩種語言的力量:可擴展超文本標記語言是用 XML 對 HTML 4 的改良
級別: 初級
Sathyan Munirathinam, 軟件工程師, Aztec Software
2002 年 7 月 01 日
本文從實際角度對 XHTML 進行了研究,它是有效地結合 HTML 的簡單性和 XML 的可擴展性的一種標記語言。本文還涵蓋了 XHTML 各種風格的基本特性并包括對語言和大量實際應用程序的討論。
作為一 名 Web 開發人員是項很艱苦的工作。您不僅必須每天避開流行瀏覽器引起的陷阱和缺陷,還必須至少留意可能(或不可能)對您的工作產生影響的眾多技術上的新發展。您 可能剛剛掌握了樣式表和 DHTML,而新的技術又要求您關注。您需要立刻學哪一個呢?現在可以放棄哪一個呢?隨著可擴展超文本標記語言(Extensible Hypertext Markup Language,簡稱 XHTML)的出現,最終可能讓傳統的 HTML 馬放南山了。
XHTML 是 HTML 和 XML 的混合物,它是為網絡設備顯示(包括 Web 瀏覽器、PDA 設備和移動電話)而特別設計的。2002 年 1 月 26 日標志了 XHTML 1.0 作為 Web 標記的正式 W3C 推薦的第二個生日。但是,XHTML 仍然要蹣跚學步,學著用微笑和大喊大叫來引起大多數 Web 設計人員的注意。
W3C 主管 Tim Berners-Lee 這樣評價 XHTML:“XHTML 1.0 連接了現在的 Web 和將來的 Web …… 它為頁面和網站作者提供了進入結構化數據 XML 世界的橋梁,同時仍然能夠保持與支持 HTML 4 的用戶代理的可操作性。"
XHTML 是非常嚴格的標記語言。它的規則很簡單,并且事實上,它的可擴展性很小 ― 即,不能編寫您自己的定義來表示語言如何動作;您必須遵循其規則。XHTML 1.0 采用 HTML 4.0 中引入的概念,這些概念在其生效之前,需要按結構化的和方法論的行為進行處理。
XHTML 可以與級聯樣式表(CSS)一起使用以完成顯示目的。XHTML 還允許您將可擴展樣式表(Extensible Stylesheet Language (XSL))用于轉換。通過使用這個基于 XML 的樣式技術,您實際上可以將一個文檔從一種類型轉換成另一種類型 ― 例如,從 HTML 文檔轉換成 PDF 文檔。
![]() ![]() |
![]()
|
通常,您可能為新增功能或者因為已經修正了以前版本的問題而將技術更新到新的版本。但就標記功能而言,XHTML 是非常類似于 HTML 4 的副本,所以不要期望存在任何新奇的標記。
W3C 聲稱 XHTML 的主要優點是 可擴展性和 可移植性:
XML 文檔要求格式良好(元素嵌套正確)。使用 HTML,添加新的元素組需要更改整個 DTD。在基于 XML 的 DTD 中,新的元素組只需要內部一致并且格式良好,就可以添加到現有的 DTD 中。這極大地簡化了新元素集合的開發和集成。
越來越頻繁地使用非臺式設備來訪問因特網文檔。在大多數情況下,這些設備不具備臺式計算機的計算能力,并且不象標準桌面瀏覽器那樣可適用于格式差的 HTML。實際上,如果這些非桌面瀏覽器沒有接收到格式良好的標記(HTML 或 XHTML),它們可能根本無法顯示文檔。
![]() ![]() |
![]()
|
XHTML 文檔由三個主要部分構成:
- DOCTYPE
- Head
- Body
基本文檔結構是:
|
<head>
區域包含關于文檔的信息,如所有權、版權和關鍵字;而
<body>
區域包含要顯示的文檔內容。
清單 1 向您顯示實際中如何使用這個結構:
清單 1. XHTML 示例
|
第 1 行:由于 XHTML 是以 XML 文檔表示的 HTML,所以它必須在文檔的頂部包括初始 XML 聲明
<?xml version="1.0"?>
。
第 2 行:XHTML 文檔必須由三組標準規則的其中一組來標識。這些規則存儲在一個稱為“文檔類型聲明(Document Type Declaration (DTD))”的單獨文檔中,并且使用這些規則驗證 XHTML 文檔結構的準確性。準確地說,DTD 的目的是描述 XHTML 中允許的語言和語法。
第 3 行:XHTML 文檔中的第二個標記必須包括帶有由
xmlns=http://www.w3.org/1999/xhtml
屬性標識的 XML 名稱空間的開始 <html> 標記。XML 名稱空間標識 XHTML 文檔使用的標記的范圍。它用來確保一個 DTD 使用的名稱不與用戶定義的標記或其它 DTD 中定義的標記沖突。
第 4 行:XHTML 文檔必須包括完整的頭部區域。這個區域包含開始
<head>
標記和標題標記(
<title></title>
),然后以結尾
</head>
標記結束。
第 5 行:XHTML 文檔必須包含開始和結尾
<body></body>
標記。在這些標記中,您可以放置傳統的 HTML 編碼標記。要與 XHTML 符合,這些標記的編碼必須是格式良好的。
第 6 行:最后,使用結尾
</html>
標記結束 XHTML 文檔。
![]() ![]() |
![]()
|
在創建 XHTML 文檔時,在該文檔的頂部聲明了它應符合的 DTD。每個 DTD 可能由一個稱為
正式公共標識(Formal Public Identifier,簡稱 FPI)的唯一標號識別。字
PUBLIC
后面的文字文本或引用文本是表示 W3C 的 XHTML 1.0 DTD 的 FPI。
目前,有三種 XHTML 文檔類型:
- Strict
- Transitional
- Frameset
|
當您想要真正清晰的標記、避免表示上的混亂時,將此與 CSS 一起使用。已經從該語言中除去了幾個標記(如
<center>
),甚至還除去了其它標記的某些屬性(如 H1 標記的
align
屬性)。
|
當您需要利用 HTML 的表示特性時,使用它;您的許多讀者都沒有能理解 CSS 的最新瀏覽器。過渡的 DTD 支持大部分標準的 HTML 4 標記和屬性。
|
這使您能夠使用 HTML 框架將瀏覽器窗口分成兩個或更多框架。這個 DTD 保存框架集定義。
![]() ![]() |
![]()
|
XHTML 文檔 必須是格式良好的 XML。它必須符合基本 XML 語法:
必須用小寫書寫標記和屬性名稱。
HTML | XHTML |
<TD BGCOLOR="#ffcc33">
|
<
td bgcolor="#ffcc33">
|
元素必須嵌套;而不能交錯。對于 XML 和 XHTML,您需要以逆序關閉標記 ― 換言之:后開先關。
HTML | XHTML |
<p>Be <b>bold!</p></b>
|
<p>Be <b>bold!
</b></p>
|
所有非空元素必須是關閉的。例如,對于 HTML,許多人使用
<p>
標記分段。這個標記設計用于標記一段的開始和結尾(使用結尾
</p>
標記)。這使它成為
非空標記,因為它包含段文本。
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
空標記語法,在右括號前有一個結尾的正斜杠(例如,
<br>
becomes
<br />
)。請注意元素文本后面的空格和結束定界符
/>
。這是為了與當前瀏覽器兼容。
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>。
屬性值必須加引號。不再有
<img ... border=0>
了。現在,您需要給每個屬性加引號,即使它是數字。
HTML | XHTML |
<img ... border=0>
|
<img ... border=
"0" />
|
不能最小化屬性值對。不允許單獨屬性(也稱為最小化的屬性)。例如,
<option selected>
不再有效了。而您必須使用
<option selected="selected">
。
內聯標記不能包含塊級別標記。例如,錨點標記不能括起表。
腳本編制元素引起了 XHTML 兼容性問題。XML 解析器將腳本解析成 XML 文檔,除非您將腳本封裝入 CDATA 塊中。因此,JavaScript 元素現在將類似于:
|
這對于大多數的當前瀏覽器來說,可能都有問題,因為它們不喜歡 CDATA 塊。目前,唯一的解決方案是從外部文件調用 JavaScript。例如:
|
對于服務器端程 序員,當動態修改 JavaScript 時,這會產生問題。對您的 JavaScript 使用獨立的文件源會阻止您動態地更改 JavaScript。因為 JavaScript 包括在客戶機端,所以服務器端不能接觸到它。當使用 ASP、JSP 或 PHP 腳本編制修改 JavaScript 時使用腳本聲明的標準 HTML 方法。這正是在使 JSP 或 ASP 100% 與 XHTML 兼容時最可能產生問題的地方。不過,請記住,目的并不是與 XHTML 100% 兼容,而是在可行的情況下開始結合 XHTML,使得需要時允許快速和簡單的過渡。那時,應該可以使用新的兼容瀏覽器,您將開始跨越到 100% 兼容性。
![]() ![]() |
![]()
|
對于想創建網站移動版本的開發人員來說,根本問題是他們當前必須用 HTML 將頁面格式化以便進行桌面瀏覽,對于 WAP 設備,可以用無線標記語言(Wireless Markup Language (WML));對于 iMode 設備可以用壓縮 HTML(Compact HTML (CHTML))。這已經產生了一個新的行業,致力于將現有的網站轉換成 WML 或 CHTML。WML 基于 XML,并且取代了快過時的手持設備標記語言(Handheld Device Markup Language (HDML)),而 CHTML 是基于 HTML 的。雖然這些標記語言很相似,但它們之間的區別使得 WAP 和 iMode 設備都不能看見 Web 頁面。而所有設備都將理解 XHTML Basic,并且它將成為一種通用標記語言。
可以獲取多種格式的完整 XHTML Basic 英文規范(請參閱 參考資料),這些格式包括 HTML、純文本、PostScript 和 PDF。可以預見 XHTML Basic 代替諸如 HDML 和 WML 的語言將是不可避免的。但是,重要的是記住 WML 和 HDML 還定義 操作和內容。目前,這些在 XHTML 中還沒有等價定義。因此,至少在短期內,WML 和 HDML 將不會消失。看誰會最終勝出將很有意思。在某種程度上計劃支持所有這三種標記語言。
![]() ![]() |
![]()
|
XHTML 中仍在開發的一方面是 設備概要, 也稱為復合能力首選項概要文件(Composite Capability Preference Profiles (CCPP))。CCPP 允許諸如移動電話之類的設備向 Web 服務器標識自己、描述其限制并只下載其能夠顯示的信息。因為可以將 XHTML 文檔分割成能夠被單獨下載的多個模塊,所以 CCPP 能起作用。
W3C 正在與 WAP Forum 等合作開發 CCPP。2001 年夏季,開始 XHTML 2.0 開發,它是結合 HTML 和 XML 的最后一步。XHTML 2.0 是前瞻性的,因為它是幾種 XML 技術的結合體,例如 XLink、XPointer、XPath 和 XInclude ― 所有這些技術當前處于開發過程中或者最近由 W3C 發布(請 參考資料中的路標)。
![]() ![]() |
![]()
|
XHTML 開辟了 Web 的新領域,為作者提供了在其 Web 頁面上混合和匹配各種基于 XML 的語言和文檔的方法。它還為非傳統 Web 訪問設備(從烤箱到電視機)提供了框架以向 Web 服務器標識它們自己及其能力,只要下載那些設備能顯示的信息。多虧有了 XHTML,您可以繼續使用您已經熟悉和喜愛的 HTML 編寫。可能只需要稍微整理一下。我猜測 XHTML 2.0(請參閱 參考資料)將具體地整理 HTML 標記及其用法。
總之,XHTML 簡化了可以讓各種新設備瀏覽的文檔的創建。另外,經過少許學習,您可以創建比以往功能強大得多的頁面。最后,XHTML 是通向 XML ― 因特網的未來語言的橋梁。
![]() ![]() |
![]()
|
- 您可以參閱本文在 developerWorks 全球站點上的
英文原文.
- 請通過單擊本文頂部或底部的
討論來參與本文的
論壇。
- 查看
W3C XHTML 1.0 規范,它將 HTML 4 的改造定義成一種 XML 1.0 應用程序,并且定義了三個與 HTML 4 定義的 DID 相應的 DTD。
- 查看
XHTML.org以獲取關于 XHTML 的新聞和信息。
- 請閱讀
XHTML 的簡介和概述,它包括對 XHMTL 和 HTML 4 之間區別的說明。
- 查找關于
XHTML Basic的更多信息。
- 查看
HTML Working Group Roadmap,它描繪了 XHTML 未來發展的清晰藍圖,包括關于 XHTML 2.0 的信息。
- 查看
Encyclozine.com,它是用 XHTML 構建的站點示例。
- 要驗證 XHTML 頁面,請嘗試
W3C HTML 驗證服務。
- 在
developerWorks XML 技術專區中查找更多 XML 參考資料。
- 在
developerWorks 網站架構主題中查找更多 Web 參考資料。
- 獲取
IBM WebSphere Studio Application Developer,它是一個易于使用的集成開發環境,用于構建、測試和部署 J2EE 應用程序,包括從 DID 和模式生成 XML 文檔。
- 查看如何成為
XML 和相關技術的 IBM 認證開發人員。
![]() ![]() |
![]()
|
![]() |
||
|
![]() |
Sathyan Munirathinam 擁有 Madurai Kamaraj 大學計算機科學學士學位和計算機應用碩士學位。作為 Aztec Software 的一名軟件工程師,他有兩年多的信息技術工作經驗。他的專業興趣是數據庫系統和聯網,他的個人興趣是閱讀技術期刊,入侵網絡系統和打板球。可以通過 sat_hyan@yahoo.com與他聯系。 |
posted on 2006-03-18 20:51 Vincent.Chen 閱讀(354) 評論(0) 編輯 收藏 所屬分類: AJAX