本文系統的講解DOCTYPE元素.同時查證了很多的資料.因為互聯網上面的資料比較雜亂,所以經過收集整理我進行了重新定義.比如對於DOCTYPE元素的定義.主要分為基礎知識和高級知識.基礎知識講解基本的DOCTYPE知識. 高級知識很多來自網絡收集, 主要是實際應用的一些技巧.
DOCTYPE是文檔類型(Document Type)的縮寫, <!DOCTYPE> 元素用於聲明一個頁面的文檔類型定義(Document Type Declaration, 即DTD).此元素聲明位於文檔中的最前面的位置,處於<html> 標籤之前。通過確認頁面的DTD,可以同時確定頁面使用哪種W3C規範(比如HTML 或XHTML 規範)。
W3C規範的正確翻譯應該為W3C推薦(W3C Recommendations).很多設計師的眼裡W3C就是標準.但是許多人都是一知半解.下面列於了目前W3C規範中的HTML規範和XHTML規範,稍後會講解HTML和XHTML的關係:
| 規範 | 推薦 |
HTML 3.2 | 1997年1月14日 |
HTML 4.0 | 1998年5月24日 |
HTML 4.01 | 1999年12月24日 |
| 規範 | 草案/提議 | 推薦 |
XHTML 1.0 | 2000 年1 月26 日 | |
XHTML 1.0 修訂版 | 2002 年8 月1 日 | |
XHTML 1.1 | 2001 年5 月31 日 | |
XHTML Modules | 2001 年4 月10 日 | |
XHTML Modules 1.1 | 2006 年7 月5 日 | |
XHTML Basic | 2000 年12 月19 日 | |
XHTML Basic 1.1 | 2006 年7 月5 日 | |
XHTML Events | 2003 年10 月14 日 | |
XHTML Events 2 | 2007 年2 月16 日 | |
XHTML Print | 2006 年9 月20 日 | |
XHTML Media Types | 2002 年8 月1 日 | |
XForms 1.0 | 2003 年10 月14 日 | |
XForms 1.0 (SE) | 2006 年3 月14 日 | |
XForms 1.1 | 2007 年2 月22 日 | |
XHTML 2.0 | 2006 年7 月26 日 | |
XLink | 2001 年6 月27 日 | |
HLink | 2002 年9 月13 日 |
XHTML可以看成是最新的HTML規範, 是一項可從HTML 4.01 平穩遷移的XML 應用。 W3C 把HTML 4.01 重構為XML 的第一個步驟,導致了XHTML 1.0 的誕生。 XHTML 1.0 依賴於HTML 4.01 標籤所提供的語義。
頁面文件通過<DOCTYPE>元素聲明不同的DTD, 來告知瀏覽器當前頁面符合哪種HTML或者XHTML規範.下面只列舉HTML4.01和XHTML1.0兩種規範相關的DTD:
HTML 4.01 規定了三種文檔類型:Strict、Transitional 以及Frameset。
如果您需要乾淨的標記,免於表現層的混亂,請使用此類型。請與層疊樣式表(CSS)配合使用:
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01//EN
http://www.w3.org/TR/html4/strict.dtd>
Transitional DTD 可包含W3C 所期望移入樣式表的呈現屬性和元素。如果您的讀者使用了不支持層疊樣式表(CSS)的瀏覽器以至於您不得不使用HTML 的呈現特性時,請使用此類型:
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
Frameset DTD 應當被用於帶有框架的文檔。除frameset 元素取代了body 元素之外,Frameset DTD 等同於Transitional DTD:
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Frameset//EN
http://www.w3.org/TR/html4/frameset.dtd>
XHTML 1.0 規定了三種XML 文檔類型:Strict、Transitional 以及Frameset。
如果您需要乾淨的標記,免於表現層的混亂,請使用此類型。請與層疊樣式表(CSS)配合使用:
<!DOCTYPE html
PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>
Transitional DTD 可包含W3C 所期望移入樣式表的呈現屬性和元素。如果您的讀者使用了不支持層疊樣式表(CSS)的瀏覽器以至於您不得不使用XHTML 的呈現特性時,請使用此類型:
<!DOCTYPE html
PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
當您希望使用框架時,請使用此DTD!
<!DOCTYPE html
PUBLIC -//W3C//DTD XHTML 1.0 Frameset//EN
http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd>
HTML 頂級元素可用性註冊//組織//類型標籤//定義語言URL
頂級元素:指定DTD 中聲明的頂級元素類型。這與聲明的SGML 文檔類型相對應。 默認為HTML。
可用性:指定正式公開標識符(FPI)是可公開訪問的對像還是系統資源。取值可以為PUBLIC或者SYSTEM.PUBLIC 默認。表示可公開訪問的對象。 SYSTEM表示系統資源,如本地文件或URL。
註冊:指定組織是否由國際標準化組織(ISO)註冊。
+為默認,表示組織名稱已註冊。
-表示組織名稱未註冊。 Internet 工程任務組(IETF)和萬維網協會(W3C)並非註冊的ISO 組織。
組織:指定表明負責由!DOCTYPE 聲明引用的DTD 的創建和維護的團體或組織的名稱,即OwnderID。 IETF為IETF。 W3C為W3C。
類型:指定公開文本類,即所引用的對像類型。 默認為DTD。
標籤:指定公開文本描述,即對所引用的公開文本的唯一描述性名稱。後面可附帶版本號。默認為HTML。
定義:指定文檔類型定義。
Frameset 框架集文檔。
Strict 排除所有W3C 專家希望逐步淘汰的代表性屬性和元素,因為樣式表已經很完善了。
Transitional 包含除frameSet 元素的全部內容。
語言:指定公開文本語言,即用於創建所引用對象的自然語言編碼系統。該語言定義已編寫為ISO 639 語言代碼(大寫兩個字母)。 EN 默認。英語。
URL:指定所引用對象的位置。
如果要檢查你的頁面內容是否符合在DOCTYPE中聲明的標準,可以使用W3C提供的驗證工具:
http://validator.w3.org/
現代瀏覽器包括不同的呈現模式,目的是既支持遵循W3C標準的網頁,也支持為老式瀏覽器而設計的網頁。其中, Standards (標準)模式(也就是嚴格呈現模式)用於呈現遵循最新標準的網頁,而Quirks (包容)模式(也就是鬆散呈現模式或者兼容模式)用於呈現為傳統瀏覽器而設計的網頁。另外,注意Mozilla/Netscape 6新增了一種Almost Standards (近似標準)模式,用於支持為標準的某個老版本而設計的網頁。
理論上,這應該是一個非常直觀的切換。假如頁面的<!DOCTYPE>元素指出了頁面的遵循標準(比如XHTML1.0), 瀏覽器就會切換到Standards模式。假如沒有指定doctype,或者指定HTML 3.2以及更老的版本,瀏覽器就切換到Quirks模式。這樣一來,瀏覽器既能正確顯示遵循標準的文檔,又不至於完全捨棄老式的、與標準不符的網頁。 但是會有下面幾種情況:
在完整的doctype聲明中,要包括相應的文檔類型定義(DTD)文件的URL。如果URL丟失,或者指定的是一個相對路徑(而不是完全限定的Internet地址),大多數瀏覽器都會進入Quirks模式,不管doctype聲明規定的是什麼模式。
瀏覽器對doctype聲明的形式和格式非常敏感,如果不能識別一個形式錯誤的doctype,就會強制進入Quirks模式(建議將一個已知正確的doctype拷貝和粘貼到文檔中,而不是親自輸入它)。之所以出現形式錯誤的doctype,一個常見的原因是在doctype 的第一部分與URL之間缺少一個空格。將一個分兩行的doctype折疊成單獨一行,常常會丟失那個空格。
瀏覽器處理過渡期的doctype時,最容易出現不一致的問題。 IE和Opera使用Standards模式;Netscape 6和舊版本的Safari使用Quirks模式;Netscape 7、Mozilla 1和新版本的Safari使用Netscape的Almost Standards模式,它是Standards模式的一個具有更好容錯性的版本。
瀏覽器在處理不能識別的doctype時,也存在不一致的現象。 IE和Opera會進入Standards模式;換言之,它假定不能識別的doctype 是尚未在瀏覽器中集成的一個新標準。 Netscape 6則相反,會在遇到不能識別的doctype時切換到Quirks模式。
doctype切換也許是讓瀏覽器進入正確呈現模式並正確顯示網頁的一種有效手段,前提是你注意到了各種瀏覽器的不一致,並能積極主動地避免各種問題。
1.緊跟在上面DOCTYPE 聲明之後的是一個XHTML 名字空間(namespace)聲明,放在增強的<html> 元素中,寫法為:
<html xmlns=http://www.w3.org/1999/xhtml>
2.由於XHTML 1.0 頁面就是合法的XML 文檔,而XML 對於標籤和屬性都是區分大小寫的,為了簡單起見,XHTML 1.0 頁面中所有的標籤和屬性都必須使用小寫。
一些免費的工具,例如HTML Tidy(http://tidy.sourceforge.net/),可以幫助你把標籤和屬性自動轉換為小寫。
3. 通過在<head> 元素中添加一個<meta> 元素來聲明頁面中使用的語言。
<meta http-equiv=Content-Type content=text/html; charset=gbk />
4.在XHTML 中,所有的屬性都必須要加上引號。
一些免費的工具,例如HTML Tidy(http://tidy.sourceforge.net/),可以幫助你自動為所有的屬性加上引號。
5. 在XHTML 中,所有的屬性都必須有值。
不能像在HTML 4.0 中那樣寫:
<input type=checkbox name=shirt value=medium checked>
而要寫成:
<input type=checkbox name=shirt value=medium checked=checked />
6. 在XHTML 中,所有的標籤都必須關閉。
關閉標籤有兩種方式,包含內容的標籤使用結束標籤關閉,空標籤在後面加上空格和/。例如:
<p>This is acceptable HTML and it is also valid XHTML.</p>
<img src=logo.gif />
7. 不要在註釋內容中使用-- 。
-- 只能使用在XHTML 註釋的開頭和結束,不能出現在註釋的內容中。下面的寫法都是不允許的:
<!--Invalid -- and so is the classic separator below. -->
<!------------------------------------>
8. 把所有的特殊符號進行HTML編碼。
W3C 的XHTML/CSS/DOM 這3 個規範構成了一個完整而嚴密的體系,我稱這3 個規範為Web 世界中三位一體神的化身。這3 個規範分別代表了Web 頁面的structure(結構)、presentation(表現)和behaviour(行為) 3 部分。將Web 頁面嚴格分為這3 層,並且盡量使每一層的內容相互獨立,有助於提高頁面的可重用性和模塊化程度,大幅降低頁面製作、維護和修改的成本。為了達到上述分層的目標,編寫的XHTML 中應該只包含與structure 相關的標記(元素和屬性)。因此應該習慣於使用Strict 類型的DTD,盡快摒棄那些帶有表現含意的標記(這些標記在HTML 4.0 規範中被標識為Deprecated 即不提倡,並且會在XHTML 以後的版本中被完全捨棄);盡快摒棄基於table 做佈局的老方法,採用完全的CSS 佈局。
《HTML 與XHTML 權威指南》,Chuck Musciano & Bill Kennedy 著。
《XHTML教程》,Chelsea Valentine & Chris Minnick 著。
《網站重構》,Jeffrey Zeldman 著。
作者:張子秋
出處:http://www.cnblogs.com/zhangziqiu/