因為XHTML是XML的一個應用,一些在基於SGML的HTML 4中完全合法的習慣在XHTML中必須改變。
文檔必須是編排良好的
編排良好性Well-formedness是[XML]引入的一個新概念。從本質上說,這意味著元素必須有結束標簽,或者必須以特殊方式書寫(在下面說明)。
元素必須嵌套,盡管SGML規定層疊非法,但現有的浏覽器普遍允許層疊。
正確:嵌套元素。
<p>here is an emphasized <em>paragraph</em>.</p>
不正確:層疊元素。
<p>here is an emphasized <em>paragraph.</p></em>
元素和屬性名必須小寫
對所有HTML元素和屬性名,XHTML 文檔必須使用小寫。 因為XML是大小寫敏感的,所以這個差別是必須的。如 <li> 和 <LI> 是不同的標簽。
對非空元素,必須使用結束標簽
在基於 SGML的 HTML 4 中,一些隱含結束意義的元素允許忽略結束標簽。而在基於XML的XHTML中,這種忽略不被允許。除了在DTD中被聲明為空的元素,所有元素必須有結束標簽。
正確:結束了的元素。
<p>here is a paragraph.</p><p>here is another paragraph.</p>
不正確:未結束元素。
<p>here is a paragraph.<p>here is another paragraph.
屬性值必須在引號中
所有的屬性必須用引號,即使是數字。
正確:在引號中的屬性值
<table rows="3">
不正確:不在引號中的屬性值。
<table rows=3>
屬性最小化
XML 不支持屬性最小化. 屬性值對必須寫全。象compact,checked這樣的屬性名不能不指定屬性值而在元素中出現。
正確:沒有最小化的屬性
<dl compact="compact">
不正確:最小化屬性
<dl compact>
空元素
空元素要麼必須有結束標簽,要麼起始標簽以/>結束. 例如,<br/>或<hr></hr>. 請參看HTML兼容性指導 HTML Compatibility Guidelines 中的信息,以保證向後兼容HTML 4用戶代理程序
正確:結束的空元素
<br/><hr/>
錯誤:未結束的空標簽
<br><hr>
屬性值中的空白字符處理
對屬性值,用戶代理程序將刪去引導和後序空白符,將一個或多個空白符(包括換行)轉換成單個字符間空間(在西方書寫體中是一個ASCII空格) See Section 3.3.3 of [XML]。
Script and Style 元素
在XHTML中,script和style元素聲明為#PCDATA內容形式,因此,< 和 & 被看作是標識的開始,<和& 這樣的實體被XML處理程序看作為實體引用而分別被認為是< 和 & . 將script和style元素的內容包裹在CDATA記號部分中避免了這些實體的擴張。
<script>
<![CDATA[
... unescaped script content ...
]]>
</script>
CDATA 部分被 XML 處理程序識別,是文檔對象模型中一個結點。請參看1.3節Section 1.3的DOM LEVEL 1推薦標准[DOM]。
替代的方式是使用外部script和style文檔。
SGML 禁止
SGML 給作者的DTD可以指定在一個元素內部禁止出現的元素。這樣的禁止在XML中是不可能的。
例如,嚴格的 HTML 4 DTD 禁止任何深度的’a’元素對另一’a’元素的嵌套。在XML中無法寫出這樣的禁止。盡管這些禁止不能在DTD中定義,一些元素不應該被嵌套。在標准化的附錄B Appendix B中是這些元素的匯總。
具有 'id' 和 'name' 屬性的元素
HTML 4 定義了name屬性的元素有 a,applet,form,frame,iframe,img,and map. HTML 4還引入了 id 屬性. 這兩個屬性都是被設計作為片段標識符。
在XML中,片段標識符是ID類型,每個元素只能有一個ID類型的屬性。因此,在XHTML1.0中,id屬性被定義為ID類型。為保證XHTML1.0文檔是結構良好的XML文檔,在定義一個片段標識符時,XHTML文檔必須使用id屬性,即使是對那些以前用name屬性的元素。請參看 HTML Compatibility Guidelines 的信息,確保XHTML文檔以text/html媒體類型使用時,這些”錨”能向後兼容。
注意,在XHTML 1.0中,name 屬性不被正式支持,在以後的XHTML版本中將被刪除。