XHTMLについて解説します。
XHTMLとは、従来SGML応用言語とされていたHTMLを、XML応用言語にしたものです。
平成18年 5月18日現在、XHTML 1.0, XHTML 1.1及びXHTML 1.0 ベーシックが勧告されております。
これらは基本的にHTML 4.01と極めて互換性が高く、(好ましいか好ましくないかはともかく)在来HTMLとして扱っても余り問題になる事はありません。
現在、W3Cでは、よりXMLの持つ柔軟性を活かしアクセシビリティを向上させたXHTML 2.0の勧告に向けて作業中となっております。
XHTML 2.0では在来HTMLとの互換性は無くなりますが、XSLTなどのXML関連技術さえ普及すれば在来HTMLしか扱えないユーザエージェントでも問題なく利用出来る事になるでしょう。
W3Cは、当初ウェブ文書の標準フォーマットをXHTMLに移行させる方針で、このためXHTMLの後継仕様としてXHTML 2.0の策定を進めてきました。
しかし、現場ではXHTMLはあくまでも在来のHTMLの代用としてしか用いられず、このため今日ではウェブ文書のXHTML化は断念され、XHTML 2.0も廃案となりました。
今後、現在策定中の在来HTML規格・HTML 5のXML化言語であるXHTML 5が後継規格となる事が予想されます。
XHTMLはXMLの応用言語です。
このため、在来HTMLに較べて、以下の点が変わります。
<?xml ?>宣言はXMLベースの文書でUTF-8かUTF-16でエンコードされている場合を除いて必ず書かなければなりません。
XMLではスタイルシート言語を併用するために<?xml-stylesheet ?>処理命令を用意しており、XML応用言語であるXHTMLでも当然これの使用が望ましいとされます。
在来HTMLでは、要素の終了点が明確な場合は終了タグが省略出来ました。
また、要素の存在が明確な場合は開始タグも省略出来ました。
XMLでは如何なる場合でもタグの省略が出来ません。
<img>要素など、内容を持ち得ない要素(空要素)は在来HTMLでは終了タグを書いてはいけない事になっておりました。
しかしながら、XMLでは如何なる場合でも終了タグを省略出来ません。
/>」と記述して終了タグも兼ねていると明示します。 />」とする事で終了タグを兼ねているとする事が出来ます。在来HTMLでは、論理型属性(属性が有るか無いかだけが意味を持つ属性)など一部属性においては属性値を記述するだけで良い事になっておりました(例: <input>要素のchecked属性値など)
しかしながら、XMLではそのような記述は認められず、論理型属性であっても属性名を記述する必要があります。
checked="checked"など)、一部属性では別の属性名を使う場合もあります(例: <table>要素のborder属性値はframe="border"となります)。この他、エラーに関するチェックが非常に厳しくなります。
例えば、在来HTMLでも「>」を文字参照で書かないとエラーになるのですが、ユーザエージェントはそれがタグ内で無い限り弾いたりはしないでしょう。
XMLではどのような状況でも「>」を記述する場合は文字参照で書かないと致命的エラーになり、文書そのものが弾かれてしまいます。
XHTMLには以下のような長所があります。
XHTMLはXML応用言語ですので、他のXML応用言語を組み込む事が出来ます。
現在でも、
等と言った応用言語が組み込めますし、今後もXHTMLと併用出来るXML応用言語は増える事でしょう。
但し、XHTMLに他のXML応用言語を組み込む場合、文書型宣言はXHTMLで定義されているものをそのまま使うことは許されません。
W3Cなどが公式に公開している文書型宣言が無い場合は自分でDTD(文法を定めた文書)を作成してそれをシステム識別子とする文書型宣言を付けなければなりません。
XHTMLはXMLの一種なのでそれ自身も再定義が可能です。
再定義でなくても、公式仕様に無い要素(<embed>要素など)をDTD(文法を定めた文書)に組み込んで利用する事も許されております。
但し、XHTMLを拡張する場合、文書型宣言はXHTMLで定義されているものをそのまま使うことは許されません。
W3Cなどが公式に公開している文書型宣言が無い場合は自分でDTD(文法を定めた文書)を作成してそれをシステム識別子とする文書型宣言を付けなければなりません。