與 XHTML 1.0 相比,,這種安排更符合邏輯,其他很多標記詞匯表的用戶對此也很熟悉,。對程序員來說,,一個很大的好處是可以在文檔中包含內(nèi)容章節(jié),而不需要重新編碼標題層次,。
對這些標題可以使用 CSS,。人們可能期望 XHTML 2.0 的瀏覽器默認實現(xiàn)能夠預先定義一部分,具體來說可能像下面這樣(摘自 XHTML 2.0 規(guī)范):
h {font-family: sans-serif; font-weight: bold; font-size: 200%}
section h {font-size: 150%} /* A second-level heading */
section section h {font-size: 120%} /* A third-level heading */
XHTML 1.0 中另一個不合邏輯的地方是,,要使用列表,,則必須將列表放在段落中。事實上,,必須使用任何塊級元素(blockquote,、預格式化的章節(jié)、table 等),。如果這些內(nèi)容僅僅是同一段落流中的一部分,,這樣做常常不合邏輯。XHTML 2.0 去掉了這些限制,。惟一的限制是不能將一個段落放到另一個段落中,。
圖像
HTML 中的 <img> 標簽實際上非常不靈活。正如 Pemberton 所說,,除了 alt 文本(妨礙采用新的圖像格式)它不含任何應變機制,,alt 文本不能使用標記,,longdesc 屬性由于笨拙而從來沒有被使用過。(longdesc 用于提供一個 URI,,該 URI 指向關(guān)于圖片的,、與 alt 屬性中的說明相比更詳細的描述。)
XHTML 2.0 為這個問題提供了一種很好的解決方案:允許任何 元素具有 src 屬性,。瀏覽器可以用這個 URI 中的內(nèi)容代替元素中的內(nèi)容,。最簡單的情況就是處理圖像。但沒有人說不能是 SVG,、XHTML 或瀏覽器能夠呈現(xiàn)的任何內(nèi)容類型,。
<img> 標簽本身仍將保留,但該標簽中現(xiàn)在包含一些內(nèi)容,。src 屬性的新操作意味著 alt 文本現(xiàn)在變成了元素內(nèi)容,,比如下面的例子:
<p><img src="http:///water.png">H<sub>2</sub>O</img></p>
對于日語等語言來說,這是一個好消息,,因為 Ruby 注釋(請參閱參考資料)要求行內(nèi)標記,而以前這在屬性值中這是不可能的,。
XHTML 2.0 在 <object> 元素中提供了更一般的圖像包含形式,,該元素可用于包含任何對象類型,從圖片,、電影到 Flash 或 Java 技術(shù)這樣的可執(zhí)行代碼,。這樣就可以通過巧妙的技術(shù),根據(jù)瀏覽器能力進行更好的委派,,<object> 元素可以多層嵌套,。比如,最外層是一段 Flash 電影,,其中包含一個 AVI 視頻文件,,再進一層是一個靜態(tài)圖片,最后在嵌套對象的核心是一段文本內(nèi)容,。更多信息請參閱 XHTML Object Module(參考資料中的鏈接),。
可擴展的語義
很長一段時間以來,一些 HTML 元素具有具有語義聯(lián)系,,比如 <address> 和 <title>,。問題是這類元素很少而且不能擴展。其間,,有人嘗試用 class 屬性為 HTML 元素提供語義,。與 class 的設計初衷相比,這樣就大大延伸了其功能,,而且由于應用 CSS 樣式的屬性的廣泛使用,,所以很難明確應用這種用法,。(有人懷疑關(guān)于 class 用途的斷言,但后者是很難駁倒的,。)
XHTML 2.0 沒有采用這些特別的方法,,而是引入了一種方法在文檔中指定類似 RDF 的元數(shù)據(jù)。RDF 陳述是一個三元組(主題,、屬性,、對象)。比如,,在英語中可能有三元組:“my car”,、“is painted” 和 “red”。
about 屬性類似于指定 RDF 三元組 subject 的 rdf:about——可以省略,,則文檔本身就是主題,。property 屬性是引用性質(zhì)的 URI(如果給定適當聲明的前綴可使用縮寫形式,更多細節(jié)請參閱 XHTML 2.0 Metainformation Attributes Module,,見參考資料),。
最后,三元組的第三個值由 about 和 property 屬性作用的元素內(nèi)容給出,,如果 content 屬性值為空則沒有內(nèi)容,。這是一個例子,如果使用過 HTML <meta> 標簽就會非常熟悉,,它指定了頁面頭 (page header) 的創(chuàng)建者:
<html xmlns="http://www./2002/06/xhtml2/" xml:lang="en">
<head>
<title>Edd Dumbill‘s Home Page</title>
<meta property="dc:creator">Edd Dumbill</meta>
</head>
...
</html>
現(xiàn)在來看看 Pemberton 給出的這個例子,,它說明了如何在真正的文檔體中使用元數(shù)據(jù):
<h property="title">Welcome to my home page</h>
這表示該標題也是 XHTML 2.0 文檔的題目,并將其指定為行內(nèi)標題,。終于不用在每個文檔中將題目寫兩次了,!
感謝一種簡單的稱為 GRDDL(從語言的方言中采擷資源描述,Gleaning Resource Descriptions from Dialects of Languages,,參見參考資料)的轉(zhuǎn)換技術(shù),,現(xiàn)在有了從 XHTML 2.0 文檔中提取 RDF 元數(shù)據(jù)的統(tǒng)一標準了。
XHTML 2.0 在其他方面也有很多變化,,多數(shù)與平行開發(fā)的其他規(guī)范(如 XForms)有關(guān),。這里無法一一介紹 XHTML 2.0 的特性。但無論如何,,與 XHTML 1.0 相比,,XHTML 2.0 是一次很大的飛躍。
XHTML 2.0 中的其他幾點變化
受夠了編寫 <pre><code> ... </code></pre> 這類代碼,?現(xiàn)在可以使用新的 <blockcode> 元素了,。
為了滿足可訪問性的要求,XHTML 2.0 提供了 role 屬性,,可以在任何 body 元素中指定,。比如,,頁面中單純的導航元素可使用 role="navigation" 屬性,這樣文本-語音引擎就可以智能地處理它,。
瀏覽器目前支持通過 Tab 關(guān)鍵字進行焦點切換,,但是有很大的隨意性。新的 nextfocus 和 prevfocus 屬性允許控制焦點在屏幕元素間轉(zhuǎn)移的順序,,該屬性對于建立可導航的用戶界面至關(guān)重要,。
準備迎接 XHTML 2.0
無論高級特性中的變化多大,XHTML 2.0 無疑仍然是 HTML,。雖然增加了新元素,,XHTML 2.0 的大部分元素仍然和過去一樣工作。從兼容的角度出發(fā),,XHTML 2.0 仍然保留了 <h1> 到 <h6> 元素,,此外還有 <img>。
不過,,XHTML 2.0 的戰(zhàn)略并不是堅持嚴格的語法向后兼容,,因此現(xiàn)有瀏覽器的 HTML 呈現(xiàn)引擎不可能完全應付 XHTML 2.0 文檔的表達能力。不管怎樣,,多數(shù) Web 瀏覽器都能很好地呈現(xiàn)任意的 XML + CSS,,大量 XHTML 2.0 也能以這種方式呈現(xiàn) —— 雖然無法獲得語義上的改進。
XHTML 2.0 中的一些區(qū)別非常重要,,改用 XForms 是其中最值得注意的,還有徹底拋棄了 HTML 的非 XML 性質(zhì),。因此現(xiàn)在還不能一下子把網(wǎng)站改成 XHTML 2.0,,但是可以為未來做好準備:
堅持使用 CSS,去掉所有表示性標記,。
考慮如何在頁面中部署微格式,。微格式可以在 HTML 中使用現(xiàn)有標準表示元數(shù)據(jù)。
如果還沒有這樣做,,用 XHTML 1.0 做一下實驗?,F(xiàn)在使用 XHTML 1.0 頁面作為常規(guī) HTML 是可能的,只要根據(jù) XHTML 1.0 HTML Compatibility Guidelines 編寫即可,,但這會帶來很大的復雜性,。不能將這種方式用于 XHTML 2.0。
使用 X-Smiles 瀏覽器做實驗,,它支持 XHTML 2.0,,并提供了 SVG、XForms 和 SMIL 2.0 Basic 能力,。
如果基于類 XHTML 的功能創(chuàng)建新的客戶機系統(tǒng),,一定要考慮使用 XHTML 2.0 作為起點,。
最后還要注意的是,XHTML 2.0 規(guī)范還沒有完成,。撰寫本文的時候,,該規(guī)范仍然處于 W3C 的工作草案階段,就是說在成為推薦標準之前,,還有一些路要走,。重要的是,它還必須經(jīng)過候選推薦標準階段,,這個階段用于收集實現(xiàn)的經(jīng)驗,。
按照 W3C HTML 工作組計劃,2007 年以前 XHTML 2.0 不大可能成為 W3C 推薦標準,。也就是說 2006 年是獲得部署經(jīng)驗的關(guān)鍵一年,。
W3C XHTML 2.0 與 WHATWG HTML 5 的比較
這兩個計劃完全不同:草根組織 WHATWG 希望漸進式地改進 HTML 4 和 XHTML 1.0,而聯(lián)盟支持的 XHTML 2.0 對 HTML 語言進行了徹底重構(gòu),。
雖然不同,,這兩種方法仍然有可比性。WHATWG 規(guī)范的一些初步成果已經(jīng)在瀏覽器中實現(xiàn),,WHATWG 的一些工作就是對 HTML 事實擴展的描述,。其中一些重要的部分,如 XMLHttpRequest 將進入 W3C 的 Rich Client Activity 規(guī)范,。WHATWG 在 Web 標準世界中還是有效的催化劑,。
把目光放遠一些,XHTML 2.0 方法為 Web 提供了全新的詞匯表,,那時候 XML 的模塊化處理,、CSS 和 ECMAScript 將很快成為常見的事物。嵌入設備如電話和數(shù)字電視沒有必要支持雜亂無章的遺留 Web HTML,,可以毫無負擔地利用純 XML 詞匯表 XHTML 2.0 的優(yōu)勢,。此外,可訪問性和國際化的新特性使 XHTML 2.0 成為第一個被認為具有通用性的 XML 文檔詞匯表,,從而成為很多基于標記的工作的堅實而經(jīng)濟的基礎,。
與過去一樣,HTML 的未來也是不確定的,,有人可能稱之為混亂,,但是我相信 XHTML 2.0 最終將得到廣泛的接受和采納。如果這是 Web 上惟一的 XML 詞匯表,,可能會有一些問題,,但是因為瀏覽器準備應付 SVG、XForms 和其他技術(shù),,所以 XHTML 2.0 看起來僅僅是另一個基于 XML 的詞匯表而已,。