※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

W3Cの勧告には、HTML4とXHTMLとの相違点として以下の10項目が挙げられています。

  1. 文書は整形式でなければならない
  2. 要素名及び属性名は小文字でなければならない
  3. 非空要素には終了タグが必要である
  4. 属性値は常に引用符で括られなければならない
  5. 属性の省略化はしてはならない
  6. meta、hr、br、img などは、空要素として書く
  7. 属性値内での改行を含む複数の空白は1つと見なす
  8. スクリプトおよびスタイル要素の定義が異なる
  9. 要素の入れ子などSGMLの排除機能を再現できない
  10. ‘id’および‘name’属性をもつ要素は、‘id’属性を使用する

 どこを書き換えればよいかという質問に回答するのはとても難しいので、上記の相違点を含んだ例を以下に示します。詳細に関しては、W3C勧告の「HTML互換性ガイドライン」を参照してください。

HTML.html (上記の10項目を抜き出したHTMLファイル)
XHTML.html (同じ内容をXHTMLで書き直したもの)

 実際の例で、HTMLとXHTMLの違いを見てみましょう。上記のHTMLとXHTMLの文書を、先頭から1行ずつ比較し、その違いを表にしてみました。

HTML.html XHTML.html
<?xml version="1.0" encoding="UTF-16"?>
XHTMLでは、XML宣言が必要
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XHTMLでは、参照するDTD(文書宣言)が異なる
<HTML> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="jp" lang="jp">
XHTMLでは、html名前空間を指定
<HEAD> <head>
要素名は小文字に統一
<META HTTP-EQUIV=Content-Type CONTENT="text/html; charset=UTF-16"> <meta http-equiv="Content-Type" content="text/html;charset=UTF-16" />
属性を必ず引用符で囲む
<TITLE>HTML4との相違点</TITLE>
<HR>
<title>HTML4との相違点</title>
<hr />
<HR>は空要素として記述。ただし、下位互換性のために"/"の前に空白を入れる
<OL>
<LI>文書は<b><u>整形式</b>でなければならない</u>
<ol>
<li>文書は<u><b>整形式</b>でなければならない</u></li>
XHTML文書は整形式でなければならず、
開始タグと終了タグが入れ子になってはならない
<LI>要素名及び属性名は小文字でなければならない
<LI>非空要素には終了タグが必要である
<li>要素名及び属性名は小文字でなければならない</li>
<li>非空要素には終了タグが必要である</li>
</li>のように必ず終了タグが必要
<LI>属性値は常に引用符で括られなければならない
<LI>属性の省略化はしてはならない
<LI>meta, hr, br, img などは、空要素として書く
<LI>属性値内での改行を含む複数の空白は1つと見なす
<LI>スクリプト及びスタイル要素の定義が異なる
<LI>要素の入れ子などSGMLの排除機能を再現できない
<LI>'id'及び'name'属性をもつ要素は'id'属性を使用する
</OL>
<BR>参考<BR>
<A HREF="http://www.w3.org/TR/2000/REC-xhtml1-20000126/">XHTML(TM) 1.0: The Extensible HyperText Markup Language - A Reformulation of HTML 4 in XML 1.0
</BODY>
</HTML>
<li>属性値は常に引用符で括られなければならない</li>
<li>属性の省略化はしてはならない</li>
<li>meta, hr, br, img などは、空要素として書く</li>
<li>属性値内での改行を含む複数の空白は1つと見なす</li>
<li>スクリプト及びスタイル要素の定義が異なる</li>
<li>要素の入れ子などSGMLの排除機能を再現できない</li>
<li>'id'及び'name'属性をもつ要素は'id'属性を使用する</li>
</ol>
<br />参考<br />
<a HREF="http://www.w3.org/TR/2000/REC-xhtml1-20000126/">XHTML(TM) 1.0: The Extensible HyperText Markup Language - A Reformulation of HTML 4 in XML 1.0</a>
</body>
</html>

 最も大きい違いは、タグが小文字になること、<BR><HR>といったタグが、空要素になることなどでしょう。

HTMLとXHTMLの違いはどこにある? - @IT
http://www.atmarkit.co.jp/fxml/askxmlexpert/022xhtml/22xhtml.html