勧告に向けて策定作業が行われていたものの、結局廃案になった"自称次世代HTML"・XHTML 2.0についてのお話です。
制作者はXHTML 2.0は失敗すると予想しておりました。実際、ウェブブラウザのメーカの中に「XHTML 2.0は勧告されてもサポートしない」と明言しているところもあるとの事で、かつて勧告されたけどヴェンダに相手にされず事実上死んでいるMNG動画のような末路に至ったのは当然の結末だったと思っております。
後方互換性を考慮する必要はないと嘯いていますが、それこそがヴェンダから拒否された最大の要因であり、失敗するであろうと思わせる最大の要因だと思っております。PNG画像のように後方互換性を無視したものであってもヴェンダに支持され、他人に有無言わせず強制・強要するような狂信的な連中がいれば
XHTML 2.0は在来のXHTML 1.1までとは大きく異なります。
ここでは、制作者が大きな変更だと感じたものを挙げておきましょう。
ISO-HTMLでも既に<h○>要素に依る見出しの等級でセクション構造が見えるようにしておりますが、XHTML 2.0ではセクションを明示する<section>要素が導入されます。
また、<section>要素内の見出しとしては、<h>要素が利用出来ます。
現行の仕様では、<p>要素にはブロックレヴェル要素を入れる事は出来ません。
これは、恐らく"伝統的な理由"に依るものと思われますが、実際には<p>要素が段落を表す要素である以上、リストや表組などのブロックレヴェル要素も含んでも構わないとするべきではないか。
と言う事で、XHTML 2.0では<p>要素内に以下のブロックレヴェル要素を含む事を許しております。
ブロックレヴェル要素にもいろいろありますが、<h○>要素や<p>要素などテキスト構造をマークアップする要素は構造モジュールとしてとして扱われる事になります。
この構造モジュールには、以下の要素が新たに追加される予定です。
現在、定義リストを表す<dl>要素には、直下に任意の個数の<dt>要素と<dd>要素を入れられます。
では、複数の<dt>要素が並ぶ場合、その後の<dd>要素は幾つの<dt>要素に対応するでしょうか。
HTML 4/XHTML 1 リファレンスは<dt>要素解説内の<dt>要素を連続させる事についてで挙げている例ですが、例えば、
<p>弊社商品は以下の箇所でお取り扱いしております。</p><dl><dt>○○浦和店</dt><dt>△△大宮店</dt><dd>△△大宮店ではお取り扱い品目が限られます。</dd>…</dl>
とある場合、日本語が解る人間なら、この<dd>要素は一番目の<dt>要素には掛からず、二番目の<dt>要素のみに掛かっている事が文脈から分かります。
一方、
<p>弊社商品は以下の箇所でお取り扱いしております。</p><dl><dt>○○浦和店</dt><dt>△△大宮店</dt><dd>いずれもお取り扱い品目が限られます。</dd>…</dl>
とある場合、日本語が解る人間なら、この<dd>要素は一番目と二番目双方の<dt>要素に掛かっているのは明らかでしょう。
このように、現行の仕様では<dt>要素と<dd>要素の組合せを明確に区別する事は出来ません。
そこで、XHTML 2.0では<dt>要素と<dd>要素の組合せを明示する<di>要素が定義されます。
これに依り、前者の例では、
<p>弊社商品は以下の箇所でお取り扱いしております。</p><dl><dt>○○浦和店</dt><di><dt>△△大宮店</dt><dd>△△大宮店ではお取り扱い品目が限られます。</dd></di>…</dl>
とする事で、人間語が理解出来ないコンピュータでも一番目の<dt>要素は直後の<dd>要素に対応していない事が認識出来ます。
一方、後者の例でも、
<p>弊社商品は以下の箇所でお取り扱いしております。</p><dl><di><dt>○○浦和店</dt><dt>△△大宮店</dt><dd>いずれもお取り扱い品目が限られます。</dd></di>…</dl>
とする事で、コンピュータでも一番目と二番目の双方の<dt>要素が直後の<dd>要素に対応している事が認識出来ます。
ナヴィゲーションのためのリストに特化した<nl>要素が追加されます。
内容としては、新たに追加された<label>要素(現行の<label>要素とは無関係)を一つ記述した後に任意箇の<li>要素が入ります。
リスト系要素(<ul>要素, <ol>要素, <nl>要素及び<dl>要素)には、リストへのキャプションとなる<label>要素が追加されます。
これは、<table>要素の<caption>要素に相当するものとお考えになれば分かり易いでしょう。
尚、新設される<nl>要素(ナヴィゲーションリスト)では<label>要素は必須となります。
新設される<blockcode>要素(コンピュータコードのブロック)内で、行を記述するのに使う事を想定しているようですが、一般のテキストに使ってはいけないと言う事ではありません。
尚、<br>要素そのものに否定的な意見を持つ者も少なくなく、この要素も肯定されないのではないかと思われます。
<b>要素, <i>要素, <tt>要素, <big>要素及び<small>要素は全廃されますが、<sup>要素と<sub>要素は存続します。
当初、XHTML 2.0では<img>要素を廃止する予定でしたが、拡張して存続させる事になったようです。
従来、<img>要素は空要素とし、代替テキストをalt属性で記述する事とされておりましたが、これを代替テキストを内容にもつ要素に変更しました。
具体的には、以下のように記述する事になります。
<h><img src="Marguerite.GIF">しらぎくさいと。</img></h>
この場合、GIF画像「Marguerite.GIF」が読み込めない場合には、内容となる「しらぎくさいと。」が取扱われる事になります。
共通属性として、画像などのオブジェクトを埋め込む属性が追加されます。
具体的には、src属性で埋め込みたいオブジェクトのURIを指定し、srctype属性でそのオブジェクトのタイプを指定します。
指定されたオブジェクトが埋め込める場合は、当該要素の内容を取扱わずに当該オブジェクトを埋め込みます。
指定されたオブジェクトが読めなかった場合は、その理由を問わず、当該要素の内容を取扱うものとします。
これに依り、以下のようなオブジェクトの入れ子関係を持たせる事も可能です。
<p srctype="application/x-shockwave-flash" src="newProducts.swf"><span srctype="image/gif" src="newProducts.gif">近日発売の新製品は…</span></p>
この場合、<p>要素の属性で指定されたフラッシュ動画が表示出来ない場合、代わりに直下の<span>要素の属性で指定されたアニメーションGIF画像が埋め込まれます。
アニメーションGIF画像も表示出来ない場合に限り、<span>要素の内容のテキストが取扱われる事になります。
尚、srctype属性は複数のタイプを指定する事も出来ます。
共通属性にhref属性やcite属性などが追加され、この結果全ての要素がリンクとして機能出来るようになります。
XHTML 2.0は従来のHTMLとの互換性が無いため、XHTML 2.0でマークアップした文書を公開するには、文書タイプをapplication/xhtml+xmlにしないと拙いでしょう。
また、名前空間はXHTML 1.xのそれと異なり、http://www.w3.org/2002/06/xhtml2/となります。
この名前空間を認識するユーザエージェントは今のところ無いようで、このためXHTMLの要素ではなく、一般XMLの要素と認識するかも知れません。
このため、現行のユーザエージェント向けに利用するとしたら、XSLスタイルシートでXHTML 1.xかHTML 4.01に変換する必要があるでしょう。