XHTML vs HTML



由於 XHTML 是一個 XML 應用程式,因此在基於 SGML 的 HTML 4 中完全合法的某些實踐必須更改。您已在上一章中看到了 XHTML 語法,因此 XHTML 和 HTML 之間的差異非常明顯。以下是 XHTML 和 HTML 的比較。

XHTML 文件必須是格式良好的

格式良好是 XML 引入的一個新概念。本質上,這意味著所有元素都必須有結束標籤,並且必須正確巢狀它們。

正確:巢狀元素

<p>Here is an emphasized <em>paragraph</em>.</p>

錯誤:重疊元素

<p>Here is an emphasized <em>paragraph.</p></em>

元素和屬性必須小寫

XHTML 文件必須對所有 HTML 元素和屬性名稱使用小寫字母。這種差異是必要的,因為 XHTML 文件被認為是一個 XML 文件,而 XML 區分大小寫。例如,<li> 和 <LI> 是不同的標籤。

所有元素都需要結束標籤

在 HTML 中,某些元素允許省略結束標籤。但 XML 不允許省略結束標籤。

正確:已終止的元素

<p>Here is a paragraph.</p><p>here is another paragraph.</p>
<br><hr/>

錯誤:未終止的元素

<p>Here is a paragraph.<p>here is another paragraph.
<br><hr>

屬性值必須始終加引號

所有屬性值,包括數值,都必須加引號。

正確:帶引號的屬性值

<td rowspan="3">

錯誤:未加引號的屬性值

<td rowspan=3>

屬性最小化

XML 不支援屬性最小化。必須完整編寫屬性值對。例如 compact 和 checked 等屬性名稱不能在元素中出現而沒有指定其值。

正確:非最小化屬性

<dl compact="compact">

錯誤:最小化屬性

<dl compact>

屬性值中的空格處理

當瀏覽器處理屬性時,它會執行以下操作:

  • 去除前導和尾隨空格。

  • 將一個或多個空格字元(包括換行符)的序列對映到單個單詞間空格。

指令碼和樣式元素

在 XHTML 中,script 和 style 元素不應直接包含“<”和“&”字元,如果存在;則它們被視為標記的開始。XML 處理器將諸如“<”和“&”之類的實體識別為實體引用,以分別顯示“<”和“&”字元。

將指令碼或樣式元素的內容包裝在 CDATA 標記部分中可以避免展開這些實體。

<script type="text/JavaScript">
   <![CDATA[
      ... unescaped VB or Java Script here... ...
   ]]>
</script>

另一種方法是使用外部指令碼和樣式文件。

帶有idname屬性的元素

XHTML 建議用id屬性替換name屬性。請注意,在 XHTML 1.0 中,這些元素的name屬性正式已棄用,並且將在後續版本的 XHTML 中刪除。

具有預定義值集的屬性

HTML 和 XHTML 都有一些屬性具有預定義和有限的值集。例如,input元素的type屬性。在 HTML 和 XML 中,這些稱為列舉屬性。在 HTML 4 中,這些值的解釋不區分大小寫,因此TEXT的值等效於text的值。

在 XHTML 中,這些值的解釋區分大小寫,因此所有這些值都定義為小寫。

實體引用作為十六進位制值

HTML 和 XML 都允許使用十六進位制值引用字元。在 HTML 中,可以使用&#Xnn;&#xnn;進行這些引用,它們都是有效的,但在 XHTML 文件中,必須僅使用小寫版本,例如&#xnn;

<html> 元素是必須的

所有 XHTML 元素都必須巢狀在<html>根元素內。所有其他元素都可以有子元素,這些子元素必須成對出現,並正確巢狀在其父元素內。基本的文件結構是:

<!DOCTYPE html....>

<html>
   <head> ... </head>
   <body> ... </body>
</html>
廣告
© . All rights reserved.