新標准的熟悉和入門
內容: 還在用 HTML 編寫文檔?如果是的話,就不符合當前標准了。2000 年 1 月 26 日,XHTML 1.0 成為萬維網浏覽(W3C) 的建議。根據 W3C,HTML 不再是 Web 標記標准。取而代之,XHtml 1.0 已替代舊寵兒,標志著通信技術令人興奮的新時代已經來臨。
那麼,XHTML 1.0 到底是什麼?對 Web 開發人員來說,它意味著什麼?下面從 W3C 的描述講起:XHTML 1.0 是 XML 應用程序的 HTML 再形成。這意味著,如果用 XHTML 1.0 編制文檔,則將 XML 固有的規則和概念應用到 Web 標記。很自然,還有個搖擺的問題:現在可以用 XHtml 1.0 標記 Web 文檔嗎?答案很明確:“是的”。所要做的全部只是學會正確組織文檔結構,選擇所需的正確文檔類型定義 (DTD),以及學會幾種管理代碼開發的新方法。
但是,XHTML 1.0 怎麼會如此輕易上手呢?在編寫文檔時,您將看到,它使用您所熟悉的 HTML 作為其詞匯。在方法上有較小的變化,而在思路上有主要的不同,XHtml 1.0 允許 Web 作者依據標准進行編碼,並開始改變有關未來發展和更改的
觀點。
為什麼需要另一種標記語言?
HTML 使用起來相當好。確實,我們一直受到提出確實管用的跨浏覽器、跨平台解決方案的挑戰。但是,在 Web 從 90 年代的早期形式發展到今天我們所知的充滿活力的活動 Web 的過程中,也意味著在前進途中消耗、破壞甚至制造了新的Html 規則。
學過 HTML 4.0 准則的開發人員都知道,在 HTML 4.0 標准出現時,已經確定了改進 HTML 准則的最終目標。Html 4.0 的一些主要考慮包括:
通過將基本格式化與樣式分離,來整理文檔反對使用隨心所欲或有問題的元素
要求聲明文檔類型(並希望在聲明中,作者遵循 Html 4.0 的三個 DTD 中的規則)
這些原則都在 XHTML 1.0 中存在,但是它們與 XML 中的概念組合在一起,這些概念幫助改進標記超出只加強其基本語法的作用。XHtml 1.0 的目標很多,但是,包括以下幾個:
提供 Web 標記中可擴展性的基礎
通過過去、現在和將來的浏覽器,提供相同或更好的互操作性
通過即將來臨的 XHTML 版本、其它 XML 應用和剛剛出現的技術(如無線和新型設備開發),使作者為不斷發展的機遇作好准備。采用 XHTML 1.0 最有說服力的理由恐怕是:開發人員(特別是通過 HTML 自學、或依靠可視設計工具來實現其目標的開發人員)可以通過學習該標准,來輕易地移至其它 XML 應用。然後,他們就可以看到 XML 和可擴展性的力量。因為過程相似:即 HTML 詞匯加上一些新的結構和語法方法,所以,XHtml 1.0 使 XML 及其應用的領域不再令人畏懼。
通過使用熟悉的語言和一些新的概念,很容易轉入不太熟悉的領域。例如,XHTML 1.0 的知識可以簡化轉移到即將出現的XHtml 版本以及無線和其它應用的相關 XML 技術的過程(如 WML(無線標記語言)、SMIL(同步多媒體語言)和 SVG(可伸縮矢量圖形))。
探詢根源
探詢 XHTML 根源有助於理解 XHtml 的基本原理及指引它的規則。
XML 和 Html 的根源相同,都是 SGML,即標准通用標記語言 (Standardized General Markup Language)。有一點很重要:SGML 本身不是一門語言。它是人們所知的元語言 -- 即包含開發其它語言所依據規則的語言。
XML 與其根源 SGML 一樣,也是元語言。正如這樣,其規則用於創建 XML 應用。而 XHTML 是將另一門 SGML 語言,Html,用作其詞匯的 XML 應用。
如果關系看起來有些復雜,那是因為它確實有些復雜。SGML 首先產生 HTML,然後是 XML。當覺察到 HTML 的擔心和限制時,XML 規則就很明顯地可以使 Html 成長為幫助開發人員脫離這些限制的標記語言。
首先,需求
為了使 XHtml 1.0 文檔符合其元語言 (XML),必須考慮幾個需求和規則。如下所示:
建議、但不要求使用 XML 聲明將 XHtml 1.0 文檔聲明成 XML 文檔。
要求 XHTML 1.0 文檔包含一個 DOCTYPE,指明這是 XHtml 1.0 文檔,並指出該文檔所用的 DTD。
XHTML 1.0 文檔有一個根元素 <html>。該 Html 元素的開始標記應該包含 XML 名稱空間 XMLns 和該名稱空間的合適值。
文檔的語法和結構必須符合 XHtml 語法規則。
實現該目標的第一步是正確組織 XHtml 1.0 文檔的結構。將從添加正確的聲明和文檔信息開始。
文檔聲明、類型和名稱空間
XHtml 1.0 文檔可以包含幾個結構元素,以便被認為是正確的:一個 XML 聲明、一個 DOCTYPE 聲明,並包括名稱空間。
XML 聲明允許作者將其文檔聲明成 XML,並包括文檔所用的編碼。
<?XML version="1.0" encoding="UTF-8"?>
如前面提到的,建議使用此聲明,但這不是必需的。不強制使用的部分原因是:如果使用,則某些浏覽器(包括 IE 4.5for Mac 和 Netscape 4.0 for Windows)將顯示不正確的 XHTML 頁面。因此,大多數對互操作性感興趣的 XHtml 1.0 作者不使用它。但是,因為編碼信息在很多情況下很重要(特別在使用國際化文檔時),所以,如果不使用 XML 聲明,則鼓勵在 meta 標記中添加編碼信息(在後面的清單 2 中顯示)。
在 XML 文檔聲明的下面 - 如果選擇不使用它,則位於文檔頂部 - 必須放置 DOCTYPE 聲明。DOCTYPE 允許作者聲明所用的文檔類型。在本例中,文檔類型是 XHTML 1.0,該文檔要符合的特定 XHtml 1.0 DTD 為 strict。
XHTML 1.0 中只有三種 DTD。它們來自 Html 4.0,其內容如下:
Strict:Strict 遵循最嚴格的 XHTML 規則。在以該類型編寫的文檔中,只允許出現當前元素、屬性和字符實體。不允許出現 Html 4.0 所反對的元素(如 font 或 center)。也不允許過時的元素。Strict 聲明如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHtml 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1- strict.dtd">
Transitional:transitional XHTML 1.0 文檔更寬容一些,它允許作者使用所反對的和當前的方法。可以在transitional 文檔中使用 font 或 center,或任何其它所反對的標記,只要文檔本身標記正確即可。不應該使用過時的元素。如果在用 XHtml 1.0 編寫 transitional 文檔,將包括以下聲明:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHtml 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1- transitional.dtd">
Frameset: frameset DTD 只為 frameset 文檔保留。符合該 DTD 的 frameset 文檔可以使用 strict 或 transitional標記。要以 XHtml 1.0 創建 frameset 文檔,在文檔頂部包括這個 DOCTYPE:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHtml 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
確定了是否使用 XML 聲明,並且添加了定義要遵循的標記規則的 DOCTYPE 聲明之後,需要將 HTML 根添加到文檔,並相應設置 XHtml 名稱空間:
<Html XMLns="http://www.w3.org/1999/xhtml">
此時,要添加一些必需的結構元素,如 head、title 和 body。清單 1 顯示包括 XML 聲明的 XHtml 1.0 transitional文檔外殼。在清單 2 中,將看到不帶 XML 聲明的 transitional 文檔,但是,有一個 meta 標記來聲明所用字符集。
清單 1:帶有 XML 聲明的 Transitional DTD 格式的 XHtml 1.0 文檔
<?XML version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHtml 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<Html XMLns="http://www.w3.org/1999/xhtml">
<head>
<title>Transitional Document with XML Declaration</title>
</head>
<body>
</body>
</Html>
在清單 2 中,將看到不帶 XML 聲明的 transitional 文檔,但是,有一個 meta 標記來聲明所用字符集。
清單 2:不帶 XML 聲明的 Transitional DTD 格式的 XHtml 1.0 文檔
<!DOCTYPE html PUBLIC "-//W3C//DTD XHtml1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<Html XMLns="http://www.w3.org/1999/xhtml">
<head>
<title>Transitional Document without XML Declaration</title>
<meta http-equiv="Content-Type" content="text/Html;charset=UTF-8"/>
</head>
<body>
</body>
</Html>
語法事項
一旦 XHtml 文檔包含必需的聲明和結構信息,就可以檢查由 XML 在 Web 標記上的影響而導致的語法更改。這些語法更改包括是否區分大小寫、正確格式的標記元素、空和非空元素,以及引號的使用。
大小寫
如您所知,HTML 不區分大小寫。這意味著,Html 元素和屬性名稱可以是大寫、小寫或大小寫混合的。因此,可以寫成:
<body background="my.gif">
或
<BODY BACKGROUND="my.gif">
甚至
<BoDy background="my.gif">
所有這些示例的功能相同。另一方面,XML 卻是區分大小寫的。因此,XHTML 要求有特定的大小寫。在 XHtml 1.0 中,所有元素和屬性名稱必須是小寫的:
<body background="my.gif">
除元素和屬性名稱之外,其它不必遵循 XHtml 1.0。請注意,屬性值(例如 "my.gif")可以是大小寫混合的。如果文件所在服務器的文件系統是區分大小寫的,或者在應用中使用大小寫混合的代碼(例如那些用 Microsoft 的活動服務器頁面 (ASP)、ASP+ 或 ColdFusion 編寫的代碼),則尤其如此。
良好的格式
雖然很多 HTML 浏覽器很寬容,但是,很多 Html 工具不符合標准。就這樣,某些作者養成了壞習慣,如不正確的標記嵌套。下例在很多浏覽器中可以使用:
<b><i>Welcome to MySite.Com</b></i>
在寬容的浏覽器中,它將顯示粗體和斜體。但是,如果拿起筆來,從粗體的開始標記到其結束標記畫一個弧,然後,再從斜體的開始標記到其結束標記畫一個弧,將看到,兩條弧線相交。這展示了不正確的標記嵌套,我們認為,這是壞格式。
在 XHTML 1.0 中,不接受這樣的壞格式標記。必須在“每個元素必須正確嵌套”方面符合良好格式的概念。前面示例用XHtml 1.0 表示為:
<b><i>Welcome to MySite.Com</i></b>
現在,再畫弧,將看到,弧線不再相交。這些標記以正確順序放置,並被認為是正確的格式。
非空和空元素
非空元素包含一個元素和一些內容:
<p>This is the content within a non-empty element.</p>
相反,空元素沒有內容,只有元素及其屬性,如 <hr> 和 <img>。
XML 規則指出,空元素和非空元素必須完全關閉。在 Html 中,可以看到非空元素通常有一些可選的結束標記。上段可以這樣寫:
<p>This is the content within a non-empty element.
在 HTML 中,認為這是正確的。XHTML 1.0 要求,非空元素要完全關閉。另一個例子是 <li>(列表項)元素。在 Html中,可以寫成:
<li>The first item in my list.
<li>The second item in my list.
或
<li>The first item in my list. </li>
<li>The second item in my list. </li>
在 XHtml 1.0 中,只允許後一種方法。
在 XML 中,用斜槓終止空元素。因此,變成 <br/>。由於某些習慣於解釋 Html 的浏覽器在使用該方法時有問題,所以,引入了替代方法,即在斜槓之前添加一個空格:<br />。
這是一個圖像元素的 XHtml 示例,它是空元素:
<img src="/School/UploadFiles_7810/201104/20110414124823504.gif" height="55" width="25" border="0" alt="picture of me" />
其它要注意的空元素是 meta 和 link。
引號
HTML 中的引號是任意的,即,可以在屬性值前後使用引號,也可以不使用,並且不會導致太多麻煩。沒有規則說:不用引號將值括起為非法。下例在 Html 中完全可接受:
<table border=0 width="90%" cellpadding=10 cellspacing="10">
盡管有些屬性值用引號括起,有些沒有,但浏覽器將正確顯示該標記。但是,如果要遵循 XHtml 1.0,則必須將所有屬性值用引號括起。
<table border="0" width="90" cellpadding="10" cellspacing="10">
如您可見,這些更改都不大。還有點兒煩,是的,但是,一旦開始使用這種方法,將會發現,這種標記要方便得多。一致
性是使 XHtml 1.0 如此吸引人的原因之一 -- 它提供了構建未來結構的堅實基礎。
XHtml 的未來
既然 XHTML 如此易用,為什麼這麼長時間才被采用呢?這是很多關心標准的人在問的問題。該問題的部分原因可能是宣傳得不夠 -- 沒有太多人了解 XHtml 1.0。甚至即使聽說過,也可能沒意識到:現在使用它有多簡單。
另一個原因是:目前用於 Html 開發的浏覽工具(如 Adobe 浏覽、Macromedia Dreamweaver、Microsoft FrontPage 等)不支持 XTHML,很多喜愛這些工具或必須在工作中使用這些工具的 Web 作者對此感到擔心。
但是,盡管有這些困難,XHTML 1.0 正在前進。事實上,下一版本,XHTML 1.1,已經相當完善,並包含 Web 標記作者某些新的、不同的概念。模塊化(將語言分成彼此獨立的模塊)是 XHTML 1.1 的主要部分。而且,更多類似於 XML 的優勢在發揮作用。例如,為 XHtml 文檔編寫自己的 DTD 或者使用模式 (schema) 的能力將帶來真正的可擴展性。
XHTML 1.0 是當今的 Web 標記標准。如果還沒使用它,至少應該好好嘗試一下。在與 XML 相關的技術領域發生的進展(特別是無線領域)強有力而令人信服地表明:標記語言的作者越靈活,其前景就越被看好。XHtml 1.0 是開闊您眼界的極佳方法。夠熟悉,就有意義;夠強大,可以幫助您創建適用於今天、更為明天激動人心的機遇作好准備的穩定、可互操作的 Web 浏覽點。
參考資料
World Wide Web Consortium XHTML Recommendation。這是 W3C 站點上詳細解釋 XHtml 1.0 的標准文檔
XHTML 1.1。正在討論中,XHTML 的這個下一版本涉及到 XHtml 1.0 的模塊化方面。
可以在這裡找到 Ch浏覽k Musciano 所著的 Web Review serIEs on XHtml 1.0。
Mozquito.Com 是 Mozquito TechnologIEs 的 Web 站點,他專為 XHtml 制作軟件產品。還可以在他們的站點找到很好的
教程和大量資源鏈接。
關於作者
作為作家、講師和設計人員,Molly E. Holzschlag 將其觀點和熱情帶入書籍、雜志和 Web 站點。被 Webgrrls 評為
Web 上最有影響的 25 位女性之一,Molly 在聯機世界已工作 10 年之久。她寫了 15 本關於 Html 和 Web 設計與開發主
題方面的書籍,包括即將出版的 Que 的 Special Edition Using XHTML 1.0、最暢銷的 Special Edition Using Html
4.0 和得到國際上普遍贊譽的 Web by Design。她的流行欄目,Integrated Design,每月出現在 We浏覽echniques 雜志。
她還是 Web RevIEw 的執行編輯,也是 Adobe Magazine、Builder.Com、DesignShops.com、Digital Chicago、Digital New York、IBM developerWorks、MacWorld、MSDN、PlanetIT 的作家,還是其它開發人員資源的成員之一。