聯系
首先,從血緣上看,它們都是標記語言(Markup Language)。區別于編程語言(C/C++/Java)和腳本語言(JavaScript/PHP)主動的邏輯和行為能力,標記語言是一個被動等待消極厭世不作為的語言。它被設計于被讀取,而不是發送指令。比如你不可能通過HTML來命令計算機計算出1+1=2,但可以輕易通過編程語言/腳本語言發出這個指令。簡單的說,編程語言和腳本語言主動向計算機發送命令得到響應,標記語言被動等待瀏覽器顯示出它們的內容。
HTML vs XML
HTML-Hyper Text Markup Language超文本標記語言,被設計用來顯示數據,核心在于數據的外觀。HTML文檔==網頁
XML-EXtensible Markup Language可擴展標記語言,被設計用于結構化、傳輸和存儲數據,核心在于數據的內容。XML文檔==純文本
你可以選擇在web應用程序中,使用XML傳輸數據,使用HTML格式化并顯示數據。它們不是相似競爭互相替代的關系,它們互相合作和互補。
所以從設計理念上看,HTML和XML的關系,就像Java和Javascript、雷鋒和雷峰塔的關系-即相互獨立,基本沒啥關系。
HTML4.01(發布于1999.12.24)是符合W3C推薦標準的HTML的常見版本和最新版本。
1.XML沒有類似HTML的預定義標簽(如head、body、h1、p),XML的標簽由文檔的創作者決定,它被設計為具有自我描述性(如上圖的note、from、to);
2.HTML的語法非常放蕩不羈不拘小節,在HTML中,如果你沒有正確關閉標簽或者標簽嵌套不正確,瀏覽器仍然可以顯示出正確的信息。就好比"What's your name?"被講成了"What your name?"或者"What are your name?"我們也是默認知道什么意思的。
但是XML是一個嚴格要求自己的語言,它有很多規則用來自律,比如所有元素必須有關閉標簽;標簽對大小寫敏感;必須正確嵌套;必須有根元素;屬性值必須加引號等。
倒霉孩子XHTML
今天的市場中存在著不同的瀏覽器技術,某些瀏覽器運行在計算機中,某些瀏覽器則運行在移動電話和手持設備上。而后者沒有能力和手段來解釋糟糕的標記語言。
XHTML-EXtensible HyperText Markup Language,看到這個名字,你猜測的沒錯,XHTML是HTML和XML近親結婚的結晶,它是具備XML嚴格語法的HTML網頁。XML1.0是以XML重構的HTML4.01。XHTML被設計于取代HTML,但它在更新到XHTML1.1版本之后就夭折了。
HTML5
HTML5是下一代HTML,它被設計用來替代HTML/XHTML,目前仍處于完善之中。它是對HTML4.01的補充,可以被看做HTML4.01的超進化。
HTML5包括:
1.添加語義化標簽,如header、footer、nav、article、aside、section
2.新的表單控件,如range、email、url、search、color、number、search和Date Pickers(date\month\week\time\datetime\datetime-local);新的表單元素如datalist;新的表單屬性如autocomplete和novalidate;新的input屬性如aotofocus、list、form、min\max\step等。
3.繪畫的canvas和矢量圖svg
4.媒介回放的video和audio
5.拖放drag/drop
6.刪除了上世紀九十年代的一些標簽,如font、frameset
XHTML vs HTML5
XHTML旨在規范HTML的格式;HTML5旨在將HTML真正的富應用化。
HTML5有兩種風格,一種是嚴格模式,一種是寬松模式。XHTML雖然已經夭折,但是它整潔的書寫風格得到了大家的喜愛。雖然HTML5對標簽閉合、屬性值引號等都不強求,但是人們還是更愿意編寫或看到更整潔的樣式。我覺得HTML5嚴格模式是沒那么理想化的XHTML。
“XHTML出師未捷身先死,HTML5集萬千寵愛于一身。”
小結