由於XHTML是一個XML應用程式,因此必須更改在基於SGML的HTML4中完全合法的某些實踐。您已經在上一章中看到了XHTML語法,因此XHTML和HTML之間的差異非常明顯。下面是XHTML和HTML的比較。
XHTML Documents Must be Well-Formed
格式良好性是XML引入的一個新概念。本質上,這意味著所有元素都必須有結束標記,並且必須正確地嵌套它們。
正確:嵌套元素
<p>Here is an emphasized <em>paragraph</em>.</p>
不正確:重疊元素
<p>Here is an emphasized <em>paragraph.</p></em>
Elements and Attributes Must be in Lower Case
XHTML文檔必須對所有HTML元素和屬性名使用小寫。這種差異是必要的,因爲XHTML文檔被假定爲XML文檔,而XML是區分大小寫的。例如,<li>和<li>是不同的標記。
End Tags are Required for all Elements
在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>
Attribute Values Must Always be Quoted
必須引用所有屬性值(包括數值)。
正確:引用的屬性值
<td rowspan="3">
不正確:未引用的屬性值
<td rowspan=3>
Attribute Minimization
XML不支持屬性最小化。必須完整寫入屬性-值對。如果未指定屬性名的值,則不能在元素中出現諸如compact和checked之類的屬性名。
正確:非最小化屬性
<dl compact="compact">
不正確:最小化屬性
<dl compact>
Whitespace Handling in Attribute Values
當瀏覽器處理屬性時,它會執行以下操作−
刪除前導空格和尾隨空格。
將一個或多個空白字符(包括換行符)的序列映射到單個字間距。
Script and Style Elements
在XHTML中,腳本和樣式元素不應直接包含「<」和「&」字符(如果存在),然後將它們視爲標記的開始。XML處理器將「<」和「&」等實體識別爲實體引用,分別顯示「<」和「&」字符。
將腳本或樣式元素的內容包裝在CDATA標記的節中可以避免這些實體的擴展。
<script type="text/JavaScript"> <![CDATA[ ... unescaped VB or Java Script here... ... ]]> </script>
另一種方法是使用外部腳本和樣式文檔。
The Elements with id and name Attributes
XHTML建議用id屬性替換name屬性。注意,在XHTML1.0中,這些元素的name屬性正式被棄用,它將在隨後的XHTML版本中被刪除。
Attributes with Pre-defined Value Sets
HTML和XHTML都有一些屬性,這些屬性具有預定義的和有限的值集。例如,輸入元素的屬性。在HTML和XML中,這些屬性稱爲枚舉屬性。在HTML 4中,對這些值的解釋是不區分大小寫的,因此TEXT的值相當於TEXT的值。
在XHTML下,這些值的解釋是區分大小寫的,因此所有這些值都是用小寫定義的。
Entity References as Hex Values
HTML和XML都允許使用十六進位值引用字符。在HTML中,這些引用可以使用&Xnn;或&Xnn;進行,它們是有效的,但在XHTML文檔中,您必須僅使用小寫版本,如&Xnn;。
The <html> Element is a Must
所有XHTML元素都必須嵌套在根元素中。所有其他元素都可以有子元素,這些子元素必須成對並正確嵌套在其父元素中。基本文檔結構是&負;