せっかくですので、XHTMLとの互換性を語りながら、 HTML作成上の注意点をまとめてみたいと思います。
XHTMLはHTMLをXMLに書き換えたものです。
#少し違っているかも知れませんが。。。
XHTMLの規則を知っていれば、作ったHTMLを簡単にXHTMLに 書き換え可能になります。
ですから、少しXHTMLを覚えておいた方がいいですね。
XHTMLはまず初めにXML宣言をします。
<?xml version="1.0" encoding="Shift_JIS"?>
XML文書であり、バージョンは1.0 エンコードはShift_JIS こうなります。
次に文書型宣言ですね。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtm1-strict.dtd">
- HTML 4.01 strict DTDならば
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
- HTML 4.01 Transitional DTDならば
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- HTML 4.01 Frameset DTDならば
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
次が<html>
- XHTMLは
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
- HTML 4.01は
- <html lang="ja">
こんな違いがあります。
そして、XHTMLでは必須でHTMLでは任意であるきまり。
- 要素名と属性名は必ず小文字で書く。
- 終了タグは省略できない。
つまり、<p></p> このように必ず要素を終わらせる必要があるのです。
HTMLでは<li>(リスト項目の要素)などは終了タグを省略できるのですが、 XHTMLではエラーになります。
- 属性値は必ず引用符で囲う。
HTMLでは<p lang=ja> このように書いても構わないのですが、 XHTMLでは<p lang="ja"> このように引用符で囲わなければなりません。
- 属性値には改行をいれない。
値が長いからといって、改行をいれると正しく解釈されない場合があります。 これはHTML4.01の規則でもあります。
- 属性値の中の「&」は「
&
」と書く
これもHTML4.01の規則でもありますので、関連する項目の際に 詳しく紹介しますが、「&」の他にも「<」「>」などの記号は 独自定義された形式で書くことになっています。
ここまでがHTMLとXHTMLとの互換性。
HTMLを作る時は以上の点を注意すれば、XHTMLに書き換える時、楽になります。
以下はHTMLをXHTMLに書き換える時の作業になります。
- 空要素の書き方
<img>など終了タグを持たない要素は<img />このように書き換えます。 なぜ空要素なのか、それは<img>テキスト</img>この必要性がないからです。 つまり、内容を持たない要素は必然的に空要素になりますよね。
例:<hr>(水平線)ただし、HTML4.01では< />この記述は間違いになります。
- 属性は最小化できない
属性名="値" これが一般的ですが、属性名が値であるものもあります。 その場合、属性名="属性名" このように記述します。 けれども古いブラウザではこの記述をすると認識しないものもあるという事で、 HTML4.01では属性名="属性名" と書くと間違いになります。
- script要素、style要素は <!-- --> このように括るとコメントと解釈され、XHTMLでは無効になります。
XMLの規則で括り方がありますが、ブラウザによっては認識しないようで、一番無難なのは何も括らず、script要素、style要素の内容を書くのがよいという事。
- 識別子にはname属性ではなく、id属性を使う。
<a name="**"> そのページの特定箇所を記すこの書き方は<a id="**"> このように書き換えます。
今は互換性ある項目のみ覚えておいた方がよいですが、参考までに書きました。
以上、XHTMLに書き換えるという事で、 HTMLの文書としての特徴が把握できたかと思います。
まとめとして、HTML4.01の文書型は以下の3種です。 あらかじめ、IMEに辞書登録されるとHTML作成が楽になりますよ。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head></head>
<body></body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head></head>
<body></body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html lang="ja">
<head></head>
<frameset></frameset>
</html>