まず,XML と XHTML の関係をはっきりさせておきましょう。「XHTML は XML からつくられたもの」ということです。
経緯を説明すると,まず,ウェブで HTML が普及したわけですが,そのうちに HTML では不足が生じてきました。HTML はタグ群で文書を記述するのですが,要素の種類が固定されていて柔軟な運用ができなかった(具体的には,文書:ウェブページを記述する以外の用途につかえなかった)のです。もっと抽象的な言語をつくって,それから用途に応じてさまざまな言語をつくれるようにしようということになりました。こうして誕生したのが XML です。
XML は抽象的な言語(メタ言語)で,簡単に言えば「タグ群でデータを記述する」という文法規則をもちます。しかし,HTML のように要素の種類は定義されていません(ですから,「XML タグ辞典」なるものは存在しないのです)。XML から「具体的な言語(XML アプリケーション)」をつくって運用することになります。
かくして XML は普及するところとなったのですが,すると,HTML にまた問題が生じました。HTML は XML の文法規則にのっとっておらず,XML 時代を生き残れないという点です。そこで HTML を XML の枠組みの中で作り直すことにしました。これが XHTML です。XHTML は XML アプリケーションということになります。
ちなみに,HTML と XML の背景には SGML というものがあります。SGML もメタな言語で,要素の種類などは定義されていません。XML よりはるかに古いものです。SGML は主に文書交換を想定して作られました。HTML は(いちおう)SGML アプリケーションです。
XML は,SGML のサブセット(部分集合)という位置付けになります。実は SGML は処理が難しく,処理を思い切って簡単にするために XML では文法規則が改められています。
以上をまとめると,
- HTML は SGML アプリケーション
- XML は SGML のサブセット
- XHTML は XML アプリケーション
- XHTML は HTML を XML の枠内で作り直したもの
ということになります。