HTML 5標準學習入門之文檔結構
51CTO推薦專題:HTML 5 下一代Web開發標準詳解
說起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修改為更簡單的<!DOCTYPE html>,這個已經眾所周知了。
- 在HTML4中多了一個<title>標簽。
這里的重點就是<title>標簽了,關于這個標簽,在HTML4.01標準中是這么說的:
Every HTML document must have a TITLE element in the HEAD section.
也即是說,HTML4要求<title>標簽是必須存在的。
而在HTML5的標準中,又是這么說的:
There must be no more than one title element per document.
HTML5中只設定了<title>標簽數量的上限,卻沒有指明下限,也就是說,沒有<title>的文檔已經被視為一個合法的文檔了。
對于DOCTYPE,HTML4中設定了6種DOCTYPE,HTML5中將DOCTYPE分為3種,這個在以后的章節中再具體說明。
再回過來看一下文檔組成,除去0-n個空格或注釋這樣并沒有多大意義的元素之外,組成的列表中還說明有一個HTML元素,但是最簡的源碼中卻沒有這東西。這是因為在HTML的規范中,一直存在“隱式標簽”這樣的概念,關于隱式標簽,大致可以這么解釋:
一部分元素,當滿足特定的前提條件時,其開始標簽或結束標簽可以在源碼中省略。在這種情況下,被省略的標簽稱為“隱式標簽”。
需要注意的是,此處的省略指的是在源碼中省略,而在最終成型的DOM樹中,這個標簽是存在的,因此才稱為隱式標簽。因此上面最簡的源碼結構,在生成DOM樹后,其真正的結構是這樣的:
- <!DOCTYPE html>
- <html>
- <head></head>
- <body></body>
- </html>
***,再總結一下XHTML中的一些規范:
- · 因為是XML,所以為了表示這是一個HTML文檔,必須有一個命名空間,其值為http://www.w3.org/1999/xhtml。
- · 因為是XML,所以MIME type不能是text/html了,text/xml、application/xml、application/xml+html都是比較好的選擇。
- · 因為是XML,必須有根元素,根元素為<html>,即<html>的開始和結束標簽不能省略了。
- · 因為是XML,所有元素只要有了開始標簽,就不能沒有結束標簽,或者自閉合。
- · 因為是XML,所有元素都得嚴格遵守大小寫,元素名稱必須為小寫。
因為是XML,文檔變得嚴格了很多,也因為是XML,其可讀性和規范性提高了不少。但最終,我們始終要在HTML的寬容性和XML的規范性之間找到***的平衡點,一味地追求極端始終是一個錯誤。
原文鏈接:http://www.cnblogs.com/GrayZhang/archive/2011/03/28/learning-html5-structure.html
【編輯推薦】