一.概述本文系統(tǒng)的講解DOCTYPE元素.同時查證了很多的資料.因為互聯(lián)網(wǎng)上面的資料比較雜亂,所以經(jīng)過收集整理我進行了重新定義.比如對于DOCTYPE元素的定義.主要分為基礎(chǔ)知識和高級知識.基礎(chǔ)知識講解基本的DOCTYPE知識. 高級知識很多來自網(wǎng)絡(luò)收集, 主要是實際應(yīng)用的一些技巧. 二.定義DOCTYPE是文檔類型(Document Type)的縮寫, <!DOCTYPE> 元素用于聲明一個頁面的文檔類型定義(Document Type Declaration, 即DTD).此元素聲明位于文檔中的最前面的位置,處于 <html> 標簽之前。通過確認頁面的DTD,可以同時確定頁面使用哪種W3C規(guī)范(比如 HTML 或 XHTML 規(guī)范)。 三.W3C規(guī)范
W3C規(guī)范的正確翻譯應(yīng)該為W3C推薦(W3C Recommendations).很多設(shè)計師的眼里W3C就是標準.但是許多人都是一知半解.下面列于了目前W3C規(guī)范中的HTML規(guī)范和XHTML規(guī)范,稍后會講解HTML和XHTML的關(guān)系: W3C HTML 規(guī)范和時間線
W3C XHTML 規(guī)范 和 時間線
XHTML可以看成是最新的HTML規(guī)范, 是一項可從 HTML 4.01 平穩(wěn)遷移的 XML 應(yīng)用。W3C 把 HTML 4.01 重構(gòu)為 XML 的第一個步驟,導(dǎo)致了 XHTML 1.0 的誕生。XHTML 1.0 依賴于 HTML 4.01 標簽所提供的語義。 四.規(guī)范與DTD頁面文件通過<DOCTYPE>元素聲明不同的DTD, 來告知瀏覽器當(dāng)前頁面符合哪種HTML或者XHTML規(guī)范.下面只列舉HTML4.01和XHTML1.0兩種規(guī)范相關(guān)的DTD: HTMLHTML 4.01 規(guī)定了三種文檔類型:Strict、Transitional 以及 Frameset。 HTML Strict DTD如果您需要干凈的標記,免于表現(xiàn)層的混亂,請使用此類型。請與層疊樣式表(CSS)配合使用: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" " HTML Transitional DTDTransitional DTD 可包含 W3C 所期望移入樣式表的呈現(xiàn)屬性和元素。如果您的讀者使用了不支持層疊樣式表(CSS)的瀏覽器以至于您不得不使用 HTML 的呈現(xiàn)特性時,請使用此類型: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " Frameset DTDFrameset DTD 應(yīng)當(dāng)被用于帶有框架的文檔。除 frameset 元素取代了 body 元素之外,F(xiàn)rameset DTD 等同于 Transitional DTD: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" " XHTMLXHTML 1.0 規(guī)定了三種 XML 文檔類型:Strict、Transitional 以及 Frameset。 XHTML Strict DTD如果您需要干凈的標記,免于表現(xiàn)層的混亂,請使用此類型。請與層疊樣式表(CSS)配合使用: <!DOCTYPE html XHTML Transitional DTDTransitional DTD 可包含 W3C 所期望移入樣式表的呈現(xiàn)屬性和元素。如果您的讀者使用了不支持層疊樣式表(CSS)的瀏覽器以至于您不得不使用 XHTML 的呈現(xiàn)特性時,請使用此類型: <!DOCTYPE html XHTML Frameset DTD當(dāng)您希望使用框架時,請使用此 DTD! <!DOCTYPE html 五.DOCTYPE 元素語法語法HTML 頂級元素 可用性 "注冊//組織//類型 標簽//定義 語言""URL" 語法元素說明頂級元素:指定 DTD 中聲明的頂級元素類型。這與聲明的 SGML 文檔類型相對應(yīng)。 默認為HTML。 可用性:指定正式公開標識符(FPI)是可公開訪問的對象還是系統(tǒng)資源。取值可以為PUBLIC或者SYSTEM.PUBLIC 默認。表示可公開訪問的對象。SYSTEM表示系統(tǒng)資源,如本地文件或 URL。 注冊:指定組織是否由國際標準化組織(ISO)注冊。 +為默認,表示組織名稱已注冊。 -表示組織名稱未注冊。Internet 工程任務(wù)組(IETF)和萬維網(wǎng)協(xié)會(W3C)并非注冊的 ISO 組織。 組織:指定表明負責(zé)由 !DOCTYPE 聲明引用的 DTD 的創(chuàng)建和維護的團體或組織的名稱,即 OwnderID。 IETF為IETF。W3C為W3C。 類型:指定公開文本類,即所引用的對象類型。 默認為DTD。 標簽:指定公開文本描述,即對所引用的公開文本的唯一描述性名稱。后面可附帶版本號。默認為HTML。 定義:指定文檔類型定義。 Frameset 框架集文檔。 Strict 排除所有 W3C 專家希望逐步淘汰的代表性屬性和元素,因為樣式表已經(jīng)很完善了。 Transitional 包含除 frameSet 元素的全部內(nèi)容。 語言:指定公開文本語言,即用于創(chuàng)建所引用對象的自然語言編碼系統(tǒng)。該語言定義已編寫為 ISO 639 語言代碼(大寫兩個字母)。 EN 默認。英語。 URL:指定所引用對象的位置。 六.檢查工具如果要檢查你的頁面內(nèi)容是否符合在DOCTYPE中聲明的標準,可以使用W3C提供的驗證工具: http://validator./ 七.DOCTYPE切換
現(xiàn)代瀏覽器包括不同的呈現(xiàn)模式,目的是既支持遵循W3C標準的網(wǎng)頁,也支持為老式瀏覽器而設(shè)計的網(wǎng)頁。其中, Standards (標準)模式(也就是嚴格呈現(xiàn)模式)用于呈現(xiàn)遵循最新標準的網(wǎng)頁,而 Quirks (包容)模式(也就是松散呈現(xiàn)模式或者兼容模式)用于呈現(xiàn)為傳統(tǒng)瀏覽器而設(shè)計的網(wǎng)頁。另外,注意Mozilla/Netscape 6新增了一種 Almost Standards (近似標準)模式,用于支持為標準的某個老版本而設(shè)計的網(wǎng)頁。 理論上,這應(yīng)該是一個非常直觀的切換。假如頁面的<!DOCTYPE>元素指出了頁面的遵循標準(比如XHTML1.0), 瀏覽器就會切換到Standards模式。假如沒有指定doctype,或者指定HTML 3.2以及更老的版本,瀏覽器就切換到Quirks模式。這樣一來,瀏覽器既能正確顯示遵循標準的文檔,又不至于完全舍棄老式的、與標準不符的網(wǎng)頁。 但是會有下面幾種情況: 1.丟失的URL或者相對URL在完整的doctype聲明中,要包括相應(yīng)的文檔類型定義(DTD)文件的URL。如果URL丟失,或者指定的是一個相對路徑(而不是完全限定的Internet地址),大多數(shù)瀏覽器都會進入Quirks模式,不管doctype聲明規(guī)定的是什么模式。 2.形式錯誤的doctype瀏覽器對doctype聲明的形式和格式非常敏感,如果不能識別一個形式錯誤的doctype,就會強制進入Quirks模式(建議將一個已知正確的doctype拷貝和粘貼到文檔中,而不是親自輸入它)。之所以出現(xiàn)形式錯誤的doctype,一個常見的原因是在 doctype 的第一部分與URL之間缺少一個空格。將一個分兩行的doctype折疊成單獨一行,常常會丟失那個空格。 3.過渡期的 doctype瀏覽器處理過渡期的doctype時,最容易出現(xiàn)不一致的問題。IE和Opera使用Standards模式;Netscape 6和舊版本的Safari使用Quirks模式;Netscape 7、Mozilla 1和新版本的Safari使用Netscape的Almost Standards模式,它是Standards模式的一個具有更好容錯性的版本。 4.未知的 doctype
瀏覽器在處理不能識別的doctype時,也存在不一致的現(xiàn)象。IE和Opera會進入Standards模式;換言之,它假定不能識別的 doctype 是尚未在瀏覽器中集成的一個新標準。Netscape 6則相反,會在遇到不能識別的doctype時切換到Quirks模式。 doctype切換也許是讓瀏覽器進入正確呈現(xiàn)模式并正確顯示網(wǎng)頁的一種有效手段,前提是你注意到了各種瀏覽器的不一致,并能積極主動地避免各種問題。 八.XHTML使用技巧
1.緊跟在上面 DOCTYPE 聲明之后的是一個 XHTML 名字空間(namespace)聲明,放在增強的 <html> 元素中,寫法為: <html xmlns="http://www./1999/xhtml"> 2.由于 XHTML 1.0 頁面就是合法的 XML 文檔,而 XML 對于標簽和屬性都是區(qū)分大小寫的,為了簡單起見,XHTML 1.0 頁面中所有的標簽和屬性都必須使用小寫。 一些免費的工具,例如 HTML Tidy(http://tidy./),可以幫助你把標簽和屬性自動轉(zhuǎn)換為小寫。 3. 通過在 <head> 元素中添加一個 <meta> 元素來聲明頁面中使用的語言。 <meta http-equiv="Content-Type" content="text/html; charset=gbk" /> 4.在 XHTML 中,所有的屬性都必須要加上引號。 一些免費的工具,例如 HTML Tidy(http://tidy./),可以幫助你自動為所有的屬性加上引號。 5. 在 XHTML 中,所有的屬性都必須有值。 不能像在 HTML 4.0 中那樣寫: <input type="checkbox" name="shirt" value="medium" checked> 而要寫成: <input type="checkbox" name="shirt" value="medium" checked="checked" /> 6. 在 XHTML 中,所有的標簽都必須關(guān)閉。 關(guān)閉標簽有兩種方式,包含內(nèi)容的標簽使用結(jié)束標簽關(guān)閉,空標簽在后面加上空格和"/"。例如: <p>This is acceptable HTML and it is also valid XHTML.</p> <img src="logo.gif" />
7. 不要在注釋內(nèi)容中使用"--" 。 "--" 只能使用在 XHTML 注釋的開頭和結(jié)束,不能出現(xiàn)在注釋的內(nèi)容中。下面的寫法都是不允許的: <!--Invalid -- and so is the classic "separator" below. --> <!------------------------------------>
8. 把所有的特殊符號進行HTML編碼。 W3C 的 XHTML/CSS/DOM 這 3 個規(guī)范構(gòu)成了一個完整而嚴密的體系,我稱這 3 個規(guī)范為 Web 世界中"三位一體神的化身"。這 3 個規(guī)范分別代表了 Web 頁面的 structure(結(jié)構(gòu))、presentation(表現(xiàn))和 behaviour(行為) 3 部分。將 Web 頁面嚴格分為這 3 層,并且盡量使每一層的內(nèi)容相互獨立,有助于提高頁面的可重用性和模塊化程度,大幅降低頁面制作、維護和修改的成本。為了達到上述分層的目標,編寫的 XHTML 中應(yīng)該只包含與 structure 相關(guān)的標記(元素和屬性)。因此應(yīng)該習(xí)慣于使用 Strict 類型的 DTD,盡快摒棄那些帶有表現(xiàn)含意的標記(這些標記在 HTML 4.0 規(guī)范中被標識為 Deprecated 即"不提倡",并且會在 XHTML 以后的版本中被完全舍棄);盡快摒棄基于 table 做布局的老方法,采用完全的 CSS 布局。
九.推薦的 XHTML 相關(guān)書籍《HTML 與 XHTML 權(quán)威指南》,Chuck Musciano & Bill Kennedy 著。 《XHTML教程》,Chelsea Valentine & Chris Minnick 著。 《網(wǎng)站重構(gòu)》,Jeffrey Zeldman 著。 |
|