そもそも「HTML タグ」ってなんなのよ
HTMLとは、HyperText Markup Languageの略でWebページを記述するためのマークアップ言語です。
「背景固定タグ(CSS)」「折りたたみタグ(javascript)」等なんでも「タグ」として説明されていることも多いですが、タグとは「意味の始まりと終わりを示す文字」のことであり、webサイト作成で「タグ」というとHTMLで使われるものです。
HTMLタグとは「<」と「>」で要素名を囲んだものです。「<」と「>」の間には要素名、属性名、属性値を書くことが出来ます。
例:

- 要素名
- 属性名
- 属性値
- 内容
HTMLタグは上記のもので構成されています。
開始タグと終了タグ
HTMLでは殆どのタグが「開始タグ」と「終了タグ」のセットで使われます。開始タグは「<要素名>」、終了タグは「</要素名>」と言う風に記述します。
HTML 4.01では終了タグは省略が可能ですが、複雑な入れ子をした時のソースの視認性を考えた時やXHTMLへの移行を視野に入れている場合などはきちんと終了タグも記述することをお勧めします。
終了タグのない「空要素」
中には終了タグがない要素もあり、それを「空要素」と言います。以下に主な空要素を列挙します。
meta、link、img、br、hr
HTMLとXHTMLの違い
XHTMLとは、Webページを記述するためによく使われるHTMLを、XMLに適合するように定義し直したマークアップ言語です。
XHTMLの利点として、XMLデータとして扱うことが出来るためXSLTで他のマークアップ言語や形式に簡単に変換ができると言うものがあります。ただ、XMLを扱うツールなどはまだまだ発展途上のようで、それなりの知識がないとこの利点の恩恵に預かるのは難しそうです。興味のある方はメタ情報とセマンティック・ウェブに詳しく説明されていますのでどうぞ。
マークアップする際の違い
難しいことは置いておいて、実際に記述する際のHTMLとXHTMLの違いを以下に説明します。
- タグは必ず小文字で
XHTMLでは小文字と大文字は区別されます。このため、タグは全て小文字で書かなければなりません。 - 終了タグは必ず必要
HTML 4.01までは終了タグを省略可能でしたが、XHTML1.0からは終了タグを省略できません。 - 空要素にも終了タグを
HTML 4.01までは空要素(br、img、hr等)終了タグを省略しなければなりませんでしたが、XHTML1.0からはこれを省略できません。 - 文法は厳密に正しく
タグを入れ子にするときは中のタグが外に出ることはできません。 HTML 4.01までもこれは文法間違いになるのですが、寛容なブラウザが表示がめちゃくちゃになることを防いでくれていました。 - 属性値は必ずダブルクォートで囲む
- id属性とname属性
id属性はa要素などでname属性の代わりになります。 今後のHTMLではname属性は廃止する方向にあるため、今後の使用は控えるべきとされています。ただ、古いブラウザではid属性によるページ内アンカーをサポートしていないことがあるので併用するのが確実かもしれません(文法チェックでは引っかかりますが…)。