這篇文章主要闡述 HTML 和 XHTML 的區別。簡單來說,XHTML 可以認為是 XML 版本的 HTML,為符合 XML 要求,XHTML 語法上要求更嚴謹些。
以下是 XHTML 相對 HTML 的幾大區別:
XHTML 要求正確嵌套
XHTML 所有元素必須關閉
XHTML 區分大小寫
XHTML 屬性值要用雙引號
XHTML 用 id 屬性代替 name 屬性
XHTML 特殊字符的處理
XHTML 要求正確嵌套
以下是正確的嵌套:
<p>設計之家<strong>更新速度最快</strong>。</p>
以下是錯誤的嵌套:
<p>設計之家<strong>更新速度最快</p></strong>。
XHTML 所有元素必須關閉
在 HTML 中 ,比如 <p>,<P> 這些標記,你可以不寫 </p>,</P>,但是在 XHTML 裡,必須要求寫關閉標記 (Closing Tag)。
比如:
<p>設計之家。
應該寫成:
<p >設計之家 。</p>
處理空元素
有些空元素 ,在 XHTML 裡的寫法是在">"之前加空格和斜槓。比如<br>,應該寫成<br />。
以下 是空元素的例子:
<br />
<hr />
<img src = "/images/adpics/1/b027.jpg" alt = "webjx" />
<Pnk rel="stylesheet" href="/styles/webjx.css" type ="text/css" />
<meta http-equiv="content -type" content="text/html; charset=UTF-8" / >
XHTML 區分大小寫
HTML 不區分大小寫,但是 XHTML 是區分大小寫的。
XHTML 語法上要求更嚴謹些。要積極的看待這個問題。
XHTML 的所有標記和屬性都要 小寫。
比如:
<IMG SRC = "/images/adpics/1/b027 .jpg" Alt = "webjx" />
應該寫成:
<img src = "/images/adpics/1/b027.jpg" alt = "webjx " />
XHTML 屬性值要用雙引號
情況就有所不同。並不強制要求屬性值加雙引號?
HTML 並不強制要求屬性值加雙引號。比如你可以寫:
<table cellspacing = 0>
<input checked >
的幾大區別:HTML 4 .01 相比實在沒有什麼不同?
但在 XHTML 裡,應該寫成:
<table cellspacing = "0 ">
<input checked = "checked" / >
XHTML 用 id 屬性代替 name 屬性
HTML 很多元素,比如 a,applet,frame,iframe,img 和 map,有 name 屬性。在 XHTML 裡是要廢除的,而用 id 屬性取而代之。
比如:
<img src="webjx.gif" name="webjx logo" />
應該寫成:
<img src="webjx.gif" id="webjx logo" />
XHTML 特殊字符的處理
& 應該在 XHTML 裡應該寫成 &。
比如:比如:XHTML 的所有標記和屬性都要小寫。
比如:
You & Me
應該寫成:
You & Me
還有如果內嵌 Jav ascript 代碼,在 XHTML 裡則應該寫成:
<script type="text/javascript">// <![CDATA[
...
//]]></script>
浏覽器的角度
以上是從協議標准的角度來看待這個問題的。如果從浏覽器的角度來看待這個問題,情況就有所不同。
考慮一下,如果把 XHTML 寫得很不嚴格,浏覽器會怎麼做?是不是會彈出一個對話框,寫著“這個網站的開發人員技術不過關,寫的不是正宗的 XHTML 文件,咱不顯示”?顯然,如果浏覽器做成這個樣子,倒貼錢也是不會有人用的。
從浏覽器的角度看待上面幾個不同,大致 是下面的測試結果(IE 和Firefox我都測試過):
XHTML 要求正確嵌套:如果你沒有嵌套,浏覽器會試圖幫你嵌套。
XHTML 所有元素必須關閉:如果你沒有關閉,浏覽器會試圖幫你關閉。
XHTML 區分大小寫:你非要寫成大寫,浏覽器幫你轉換成為小寫。
屬性值要用雙引號:你非要不肯加,浏覽器幫你加。
特殊字符的處理:You & Me 也好,You & Me 也好 ,浏覽器都能讀入。
用 id 屬性代替 name 屬性 :你非要用 name 也可以。
XHTML 裡應該寫成 &。以下是正確的嵌套。
如果 你在文檔開始用 DocType 指定為 XHTML 了,有一點需要注意。在給 Tag 用 class 指定CSS 的時候,是區分大小寫的。例如,你定義了一個CSS如下,
<style>
.hello { ...... }
</style >
而你使用的時候寫成,
<p class="Hello"> ......
而你使用的時候寫成,如果從浏覽器的角度來看待這個問題 。
那這個CSS是不會被使用的。要積極的看待這個問題,這讓你可以用更多的名字來命名 Style,是一個好事。
XHTML 標准的前途
從標准制定者的初衷看,制定 XHTML 標准是試圖把 HTML 規范成為嚴格的 XML 格式,這樣無可避免的會導致一個結果,就是從 HTML 到 XHTML 的升級導致標准的容錯能力降低了。把自己的網頁源文件寫得嚴格一點當然是好事,但是一個標准不可能去要求浏覽器降低自己的容錯能力。
XHTML 1 .0 標准是兼容 HTML 4.01,是個不錯的協議,可以讓開發者在編寫代碼的同時通過一些工具來檢查代碼的合法性,雖然對於用戶而言,制作出來的網頁和 HTML 4.01 相比實在沒有什麼不同。對於你寫新的網頁來說,使用 XHTML 1.0 還是一個不錯的選擇。
XHTML 1.1 標准要求浏覽器不再支持原先的容錯能力,這是一個標准制定者走火入魔的典型例子,這個標准從學術上說非常純淨,但是對於浏覽器而言,則是個呆板、笨拙、不可理喻的標准。所以目前所有由人類開發的浏覽器都沒有遵照所謂純淨的 XHTML 1.1的標准,你的代碼只要浏覽器能讀懂,他都會很好的顯示出來,而不跳出彈框報錯。
應該寫成::應該寫成:以下是 XHTML 相對 !
從發展的趨勢來看,一個標准沒有浏覽器服從,等於是沒有意義的標准。從浏覽器的實現角度來看,新的協議只能在原來 HTML 的基礎上擴大能力增加容錯 ,而不能縮小了能力減少容錯。所以新的協議中,只有擴大能力增加容錯的部分會被采納,而其他部分都僅僅是紙上談兵而已。