關於DOCTYPE的使用和說明
DOCTYPE不可怕,但把它拿走,會讓你怕了又怕。
發現很多朋友提出有關DIV+CSS排版問題,以及IE與FF的相容問題。怎麼問的都有,結果就是一個——顯示很奇怪,很難調整。我們瀏覽的大多數網站,或者用Dreamweaver建立一個新的網頁文件時,原始碼的頂部都會有DocType宣告,但是很多人沒有注意它,甚至在創作時候直接將它刪掉,其實這往往就是噩夢的開始。在遵循標準的任何Web文件中,DOCTYPE都是一項必需的元素。它會影響程式碼驗證,並決定了瀏覽器最終如何顯示你的web文件。為了避免DOCTYPE的問題重複出現,我根據手頭的資料整理了這篇文件,以備自己及有興趣的朋友參考。
在預設情況下,FF和IE的解釋標準是不一樣的,也就是說,如果一個網頁沒有宣告DOCTYPE,它就會以預設的DOCTYPE解釋下面的HTML。在同一種標準下,不同瀏覽器的解釋模型都有所差異,如果宣告標準不同,不用我說,您自己想就可以了。學習網頁標準,瀏覽器相容,從哪裡開始您自己決定,但是,請認識DOCTYPE:
一、什麼是DOCTYPE
DOCTYPE是Document Type(文件型別)的簡寫,在頁面中,用來指定頁面所使用的XHTML(或者HTML)的版本。要想製作符合標準的頁面,一個必不可少的關鍵組成部分就是DOCTYPE宣告。只有確定了一個正確的DOCTYPE,XHTML裡的標識和CSS才能正常生效。
二、DOCTYPE的規則
DOCTYPE宣告的寫法遵循一定的規則,它指出閱讀程式應該用什麼規則集來解釋文件中的標記。在Web文件的情況下,“閱讀程式”通常是瀏覽器或者校驗器這樣的一個程式,“規則”則是w3c所釋出的一個文件型別定義(dtd)中包含的規則。
每個dtd都包括標記、attributes、properties等內容,它們用於標記web文件的內容;此外還包括一些規則,它們規定了哪些標記能出現在其他哪些標記中。每個web建議標準(比如html 4 frameset和xhtml 1.0 transitional)都有自己的dtd。
以下是從手冊上摘抄的規則:
語法:
HTML 頂級元素 可用性 "註冊//組織//型別 標籤//定義 語言""URL"
可能值:
- 頂級元素:指定 DTD 中宣告的頂級元素型別。這與宣告的 SGML 文件型別相對應。 HTML 預設。HTML。
- 可用性:指定正式公開識別符號(FPI)是可公開訪問的物件還是系統資源。 PUBLIC 預設。可公開訪問的物件。SYSTEM 系統資源,如本地檔案或 URL。
- 註冊:指定組織是否由國際標準化組織(ISO)註冊。 + 預設。組織名稱已註冊。
- 組織名稱未註冊。Internet 工程任務組(IETF)和全球資訊網協會(W3C)並非註冊的 ISO 組織。
組織:指定表明負責由 !DOCTYPE 宣告引用的 DTD 的建立和維護的團體或組織的名稱,即 OwnderID。 IETF IETF。 W3C W3C。
- 型別:指定公開文字類,即所引用的物件型別。 DTD 預設。DTD。
- 標籤:指定公開文字描述,即對所引用的公開文字的唯一描述性名稱。後面可附帶版本號。 HTML 預設。HTML。
- 定義:指定文件型別定義。
Frameset 框架集文件。
Strict 排除所有 W3C 專家希望逐步淘汰的代表性屬性和元素,因為樣式表已經很完善了。
Transitional 包含除 frameSet 元素的全部內容。
- 語言:指定公開文字語言,即用於建立所引用物件的自然語言編碼系統。該語言定義已編寫為 ISO 639 語言程式碼(大寫兩個字母)。 EN 預設。英語。
- URL:指定所引用物件的位置
為了獲得正確的DOCTYPE宣告,關鍵就是讓dtd與文件所遵循的標準對應。例如,假定文件遵循的是xhtml 1.0 strict標準,文件的doctype宣告就應該引用相應的dtd。另一方面,如果doctype宣告指定的是xhtml dtd,但文件包含的是舊式風格的html標記,就是不恰當的;類似地,如果doctype宣告指定的是html dtd,但文件包含的是xhtml 1.0 strict標記,同樣是不恰當的。
三、選擇什麼樣的DOCTYPE
如上例所示,XHTML 1.0中有3種DTD(文件型別定義)宣告可以選擇:過渡的(Transitional)、嚴格的(Strict)和框架的(Frameset)。這裡分別介紹如下。
1.過渡的
一種要求不很嚴格的DTD,允許在頁面中使用HTML4.01的標識(符合xhtml語法標準)。過渡的DTD的寫法如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2.嚴格的
一種要求嚴格的DTD,不允許使用任何表現層的標識和屬性,例如<br/>等。嚴格的DTD的寫法如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3.框架的
一種專門針對框架頁面所使用的DTD,當頁面中含有框架元素時,就要採用這種DTD。框架的DTD的寫法如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
使用嚴格的DTD來製作頁面,當然是最理想的方式。但是,對於沒有深入瞭解Web標準的網頁設計者,比較合適的是使用過渡的DTD。因為這種DTD還允許使用表現層的標識、元素和屬性,比較適合大多數網頁製作人員。
四、需要注意的問題
沒什麼特別的,就是一定要將DOCTYPE宣告放在XHTML文件的頂部,上面哪怕多個HTML註釋標記都不行。
最好示例程式碼也加上DOCTYPE,否則效果會有差異。
五、各種DOCTYPE
HTML Strict | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
HTML Transitional | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
HTML Frameset | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> |
XHTML 1.0 Strict | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
XHTML 1.0 Transitional | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
XHTML 1.0 Frameset | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> |
XHTML 1.1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
XHTML 2.0 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 2.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml2.dtd"> |
相關文章
- 關於BUGZILLA的說明和安裝
- 關於GeoWebCache的部署說明Web
- Oracle中關於PCTFREE和PCTUSED的說明Oracle
- 關於NTP SERVER的配置說明Server
- 關於DedeCMS版本號的說明
- MySQL:關於ICP特性的說明(未完)MySql
- 關於支援OPenACC的編譯器說明編譯
- java 關於操作Collection的一點說明Java
- 關於 RPM 命令的權威說明
- 關於事務的英文說明 Transaction OverviewView
- 關於SAP abap程式開發的說明
- Webots和ROS的使用說明(譯)WebROS
- Oracle Audit 功能的使用和說明Oracle
- sql server關於跟蹤日誌查詢使用說明SQLServer
- 關於SmartForm和ScriptForm的輸出格式設定說明(轉載)ORM
- 關於golang中下劃線(_)的語義說明Golang
- 關於Numba的執行緒實現的說明執行緒
- 資料結構 關於B樹說明及插入和分裂資料結構
- 關於SCN HEADROOM 和_external_scn_rejection_threshold_hours 的說明OOM
- httpd一之關於http工作模式的基本說明httpd模式
- 關於包(Package)應用規範的說明 (轉)Package
- keycloak~關於社群登入的過程說明
- 【AMM】關於ASM中AMM引數說明ASM
- 使用說明
- jQuery - 函式 $.ajaxSetup 的說明和使用jQuery函式
- Ogre記憶體池的使用和說明記憶體
- casperjs中的open()和thenOpen()使用說明JS
- 成員函式的說明和使用(轉)函式
- 關於 UiPath Activities 中文手冊的一些說明UI
- 【FLASHBACK】關於閃回資料庫的一點說明資料庫
- 關於PGA_AGGREGATE_TARGET的引數說明
- 關於contraint_name的一點說明AI
- 關於AIX上VMO調整引數的若干說明AI
- java中關於如何執行jar格式程式的說明JavaJAR
- 前端元件wolfTable中關於表格凍結部分的說明前端元件
- Hibernate級聯關係的說明和優化優化
- WebApiClientCore使用說明WebAPIclient
- QLExpress使用說明Express