說起HTML的結構,很多人都能說得頭頭是道,一般來說答案可能是這樣的:
一個DOCTYPE,一個html,裡面有head和body元素。
這當然不能說是不正確的,但是如果問到一個最小的HTML來源檔案必須有哪一些東西的話,恐怕很少有人能正確地做出回答。
先來回答這個問題,一個最簡的HTML5原始碼檔案需要的內容如下:
<!DOCTYPE html>
是的,就這樣,一個字元不多,一個字元不少,除了大小寫可任意變化外,其他的任何內容都是不能變動的。
那麼究竟是怎麼樣的規則,導致一個最簡的源碼檔案必須有doctype宣告呢?根據標準,一個HTML文檔有以下內容組成(嚴格依照順序):
一個BOM標記,且這個BOM標記必須為U+FEFF。
0-n個空格或註解。
DOCTYPE宣告。
0-n個空格或註解。
一個HTML元素。
0-n個空格或註解。
這裡存在著一些和HTML4的不同,一個HTML4的最簡單原始碼檔案是這樣的:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <title>这里是标题</title>
兩者的差異是顯而易見的:
HTML5把DOCTYPE修改為更簡單的8b05045a5be5764f313ed5b9168a17e6
,這個已經眾所皆知了。
在HTML4中多了一個b2386ffb911b14667cb8f0f91ea547a7
標籤。
這裡的重點就是b2386ffb911b14667cb8f0f91ea547a7
標籤了,關於這個標籤,在HTML4.01標準中是這麼說的:
#Every HTML document must have a TITLE element in the HEAD section.
也即是說,HTML4要求b2386ffb911b14667cb8f0f91ea547a7
標籤是必須存在的。
而在HTML5的標準中,又是這麼說的:
There must be no more than one title element per document.
HTML5中只設定了b2386ffb911b14667cb8f0f91ea547a7
標籤數量的上限,卻沒有指明下限,也就是說,沒有b2386ffb911b14667cb8f0f91ea547a7
的文檔已經被視為一個合法的文檔了。
對於DOCTYPE,HTML4中設定了6種DOCTYPE,HTML5中將DOCTYPE分為3種,這個在以後的章節中再具體說明。
再回過來看文檔組成,除去這樣並沒有多大意義的元素之外,組成的列表中還說明有一個HTML元素,但是最簡的源碼中卻沒有這東西。這是因為在HTML的規範中,一直存在著「隱式標籤」這樣的概念,關於隱式標籤,大致可以這麼解釋:
一部分元素,當滿足特定的前提條件時,其開始標籤或結束標籤可以在來源碼中省略。在這種情況下,被省略的標籤稱為「隱式標籤」。
需要注意的是,這裡的省略指的是在原始碼中省略,而在最終成型的DOM樹中,這個標籤是存在的,因此才稱為隱式標籤。因此上面最簡的源碼結構,在生成DOM樹後,其真正的結構是這樣的:
<!DOCTYPE html>
最後,再總結一下XHTML中的一些規範:
因為是XML,所以MIME type不能是text/html
了,text/xml
、application/xml
、application/xml+html
都是比較好的選擇。
因為是XML,必須有根元素,根元素為100db36a723c770d327fc0aef2ce13b1
,也就是100db36a723c770d327fc0aef2ce13b1
的開始與結束標籤不能省略了。
因為是XML,所有元素只要有了開始標籤,就不能沒有結束標籤,或是自閉合。
因為是XML,所有元素都得嚴格遵守大小寫,元素名稱必須為小寫。
因為是XML,文件變得嚴格了許多,也因為是XML,其可讀性和規範性提高了不少。但最終,我們始終要在HTML的寬容性和XML的規範性之間找到最佳的平衡點,一味地追求極端始終是個錯誤。
以上是HTML5標準學習-文件結構詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!