首頁  >  文章  >  web前端  >  HTML5標準學習-文件結構詳解

HTML5標準學習-文件結構詳解

黄舟
黄舟原創
2017-03-27 15:34:491622瀏覽

說起HTML的結構,很多人都能說得頭頭是道,一般來說答案可能是這樣的:

一個DOCTYPE,一個html,裡面有head和body元素。

這當然不能說是不正確的,但是如果問到一個最小的HTML來源檔案必須有哪一些東西的話,恐怕很少有人能正確地做出回答。

先來回答這個問題,一個最簡的HTML5原始碼檔案需要的內容如下:

<!DOCTYPE html>

是的,就這樣,一個字元不多,一個字元不少,除了大小寫可任意變化外,其他的任何內容都是不能變動的。

那麼究竟是怎麼樣的規則,導致一個最簡的源碼檔案必須有doctype宣告呢?根據標準,一個HTML文檔有以下內容組成(嚴格依照順序):

  1. 一個BOM標記,且這個BOM標記必須為U+FEFF。

  2. 0-n個空格或註解。

  3. DOCTYPE宣告。

  4. 0-n個空格或註解。

  5. 一個HTML元素。

  6. 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,所以為了表示這是一個HTML文檔,必須有一個命名空間,其值為www.w3.org/1999/xhtml

  • 因為是XML,所以MIME type不能是text/html了,text/xmlapplication/xmlapplication/xml+html都是比較好的選擇。

  • 因為是XML,必須有根元素,根元素為100db36a723c770d327fc0aef2ce13b1,也就是100db36a723c770d327fc0aef2ce13b1的開始與結束標籤不能省略了。

  • 因為是XML,所有元素只要有了開始標籤,就不能沒有結束標籤,或是自閉合。

  • 因為是XML,所有元素都得嚴格遵守大小寫,元素名稱必須為小寫。

因為是XML,文件變得嚴格了許多,也因為是XML,其可讀性和規範性提高了不少。但最終,我們始終要在HTML的寬容性和XML的規範性之間找到最佳的平衡點,一味地追求極端始終是個錯誤。


以上是HTML5標準學習-文件結構詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn