HTMLからXHTML、そしてXMLへ
HTMLとXHTMLの違いは、一言で「正確な記述」です。HTMLがバージョン5を迎えていますが、マークアップ言語に求める市場の要求が、HTMLの仕様のほぼ限界に来ているため、その後継版としてXMLが提唱されます。ところがXMLはHTMLと比べて、記述方法が厳密で難しいので、その中間としてXHTMLが生まれました。「おふとんの人」は、HTML5で記述していますので、ソースを参考にして下さい。
HTMLのバージョン
HTMLは、文字列に意味を持たせるためにマークアップ言語として提唱されて生まれてきましたが、改良がなされ、バージョン5を迎えています。以前に、DOCTYPE宣言でも述べましたが、HTMLのDOCTYPE宣言は
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
と書きましたが、ここで「HTML 4.01 Transitional」と書いてあるように、HTMLバージョン4のTransitionalを使うという宣言です。このように、HTMLは少しずつ改良が加えられて、タグが増えたり仕様が変更になったりして、バージョン4まで来ました。
HTMLのマークアップでは、pタグで「ここは段落です」や、emタグで「ここは重要です」といった抽象的な意味しか持たせることができません。それを補うようにid属性を使用します。
次世代のXML
そこで、もっと便利なマークアップ言語が必要であるということで、XMLが提唱されました。これは、タグ自体を勝手に作ることができ、自作のタグで「ここはカレーライスについて」とか、「ここは在庫数について」などとマークアップできる、とても有用なものです。
XHTMLは、HTMLとXMLの中間
ところが、XMLはHTMLと違って、マークアップのミスが許されないばかりか、宣言が複雑で一般的なパソコンレベルの人が覚えるには、とても難しいと思います。そこで、HTMLからXMLへの時代転換をワン・クッション置くということで、XHTMLが生まれました。
XHTMLは、詳しくは後述しますが、XMLに分類されるために、XMLの厳密性とHTMLの簡素な性質を併せ持ったマークアップ言語です。
XHTMLの宣言
先ほども述べましたが、「おふとんの人」はXHTMLで記述してあります。そのため、XHTMLの宣言は、このWebページのソースを見て頂けたらよいのですが、次のようになります。
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3行ございますが、1行目はXMLの宣言になります。XHTMLはXMLに分類されてくるので、XMLの宣言が必要になってきます。ところが、この宣言はまだ対応していないブラウザが多いのか、この宣言を入れていると、ソースをうまく認識してくれない場合があり、JavaScriptが動作しないというトラブルが発生することもあります。
そこで、厳密にはダメな行為なのですが、この1行目の宣言を省いている人もいるようです。私も、お客様に納品するWebページでは、動作保証のために、XMLの宣言を記述していません。
2行目と3行目は、DOCTYPE宣言です。長い宣言ですので2行に分けてあります。意味としては、「W3Cのルールに従って、XHTMLバージョン1のTransitionalで記述します。」という具合です。
HTMLとXHTMLの違い
ソースの記述ミスに対する寛容性
HTMLでは、ソースの記述が多少ミスをしていても、ブラウザが勝手にミスを修正してくれて、うまく記述される場合があります。そのことから、最近では少なくなってきましたが、市販されているHTMLの解説本でも、間違った教え方をしている本を見かけることがあります。
XHTMLのルールでは、XMLに近いXHTMLですので、ソースの記述にミスが許されません。例えば、HTMLでは終了タグを入れ忘れてもほぼ問題ないのですが、XHTMLでは、記述ミスと見なされます。
そうとは言うものの、今現段階で使用されているブラウザは、WebページがXHTMLで宣言されていても、HTMLと同様に扱われて、記述ミスを許してくれるものばかりです。
記述方法の違い
XHTMLは、HTMLと比べて次のような大きな違いがあります。
- 終了タグを省略できない。
では、終了タグを必要としないhrタグやimgタグなどは、どのように記述するかと言いますと
●HTMLでのhrタグ
<hr>
●XHTMLでのhrタグ
<hr></hr>
または
<hr />
XHTMLでは、終了タグを省略できないので、前者のように強引に終了タグを入れます。本来終了タグを必要としないタグに、強引に終了タグを入れるのは面倒なので、後者のような表現が導入されました。私は、後者を使用しています。
それ以外では、表示のされ方など、まったく同じです。
装飾方法の違い
マークアップ言語は、コンテンツをマークアップするのが目的ですが、実際のWebページでは、マークアップのみならず文字の色を変えたり、大きさを変えたり、線を引いたり、センターリングしたりと、文字の見た目を変えています。
そのような装飾を、HTMLでは文字を装飾するためのタグ、例えば文字の色や大きさを変えるためのfontタグを用いたり、太字にするためのbタグを用いたりしますが、XHTMLでは、これらのような、マークアップではなく見た目を変えるためのタグは、過去との互換のために残してありますが、基本的に消滅させる方向で動いていますので、使用しない方が良いと思います。
では、どのように文字の色、大きさ、線などを変更するかと言いますと、スタイルシートを用います。スタイルシートに関しては、次の章で述べることに致します。
言語の指定
「18.html、title、divの説明」のHTMLタグでも説明したように、lang属性などで言語の指定をしなければなりませんが、XHTMLでは、言語の指定方法がHTMLの場合と少し異なってきます。
●XHTMLでの日本語指定
<html xml:lang="ja" lang="ja">
このように、xml:lang属性が入ります。厳密には、このxml:lang属性を指定すると、lang属性が必要でなくなるのですが、ブラウザによってはxml:lang属性を認識しないものもあるので、念のためlang属性を残しておきます。
あえて述べなくてもご存じだと思いますが、これらのxml:lang属性とlang属性は、前後が入れ替わっても問題ございません。
結局、HTMLとXHTML、どちらを使えばよい?
結局のところ、どちらを使ってもよいです。
未だに人気の歌舞伎と比べるのは、ジャンル違いかと思いますが、HTMLも同様に、10数年経っても無くならないと思います。ですので、慣れないうちは簡単なHTMLを使えばよいと思います。また、いずれはXMLに移行すると思うので、XHTMLで記述していく方向で良いと思うのですが、まずはHTMLで練習しておいて、慣れたらXHTMLに記述し直すというのも、一つの手だと思います。
- ← 前のページ 「23.「ページのトップへ戻る」の設置」
- 「25.Webサイトの構造とデザインを考える」 次のページ →