HTML / XHTML / XML / HTML5 違いについて
過去にこれらの違いについて理解しようと色々調べて、結局よく分からずモヤモヤした感じで終わってしまったのを覚えています。
多分それをあまり理解できていなくてもHTMLを書く上で問題ないとは思うのですが、技術書を読んでいて目にする度に少し気持ち悪いです。
スッキリしたいですし、良い機会なのでもう一度調べてみます。
HTMLとXML
元々、SGML(Standard Generalized Markup Language)というマークアップ言語が存在していて、それを改良して生まれたのがHTMLになります。
HTMLはWeb文書を書くのに特化して作られました。
その一方で、SGMLからまた別のXMLという言語も生まれました。
つまりHTMLとXMLは別の言語ではありますが、元を辿るといずれもSGMLという一つの言語から派生したものになります。
それぞれには以下のような特徴があります。
HTML
- Web文書向け
- あらかじめ使用できるタグが固定で決められている。
- XMLより文法ルールが緩い(大文字・小文字の混在がOKなど)
- レイアウト情報を持つ。 など
XML(eXtensible Markup Language)
- データを保管するためのマークアップ言語
- 名前の通り、拡張が可能(extensible)。つまり自分で好きなようにタグを定義できる。名前を表すタグが欲しいと思ったら、自分で作って”<名前></名前>”のような感じに使用できます。
- HTMLより文法ルールが厳しい(要素名は小文字で統一しなければいけないなど)
- レイアウト情報を持たない。 など
具体的にXMLでマークアップされた文書は以下のようなものです。
<?xml version="1.0" encoding="Shift_JIS"?> <?xml-stylesheet type="text/xsl" href="testxsl.xsl"?> <おこづかい帳> <支出> <内容> <日付>1月20日</日付> <交通費>780</交通費> <食費>980</食費> <嗜好品>250</嗜好品> </内容> <内容> <日付>1月21日</日付> <交通費>950</交通費> <食費>1200</食費> <嗜好品>300</嗜好品> </内容> <内容> <日付>1月22日</日付> <交通費>500</交通費> <食費>1500</食費> <嗜好品>250</嗜好品> </内容> </支出> </おこづかい帳>
どちらも文書を構造化(意味付け)するための言語ですが、用途が違ったり異なる特徴を持っているんですね。
XHTML
のちに、HTMLをXMLの様に拡張可能にしてもっと便利にしたい!ということになりました。そして、HTMLをXMLの文法を用いて再定義することで生まれたのがXHTMLになります。
なんとなくXHTMLと聞くと、HTMLがバージョンアップしてできたものでは?と考えそうになりますが、それは正しくありません。正確には、XHTMLはXMLを元にして生まれた言語です。
そのため、XHTMLとHTMLは異なる言語になります。XHTMLはHTMLにとても良く似たXMLと考えたほうが良いです。
- 既存のHTMLタグが使える。つまり普通にWeb文書が書ける。
- 拡張が可能。XMLのように独自タグを作って使用できる。
- HTMLより文法ルールが厳しい。
HTML5
XHTMLが登場してからは、HTMLとXHTMLの両方が長いあいだ利用されました。
しかしWebが更に普及・進化していくにつれて、Webページは文書構造を記述するだけではなく、PCやスマホにインストールして使用されるネイティブアプリケーションに近い見た目や使用感を持った、今でいうWebアプリケーションとしての役割も求められるようになっていきます。 当時のHTMLとXHTMLのままでは、Webアプリケーションとしての機能を実現することは困難でした。
そのため、のちにHTMLの機能を見直す大幅な改定が行われました。そうして、現在主流となっているHTML5が誕生した、ということらしいです。