エヌ・ティ・ティドコモ端末でも、XHTMLに対応したフォーマが主流となっており、また、これらの端末では独自のスタイルシートも利用出来ます。
しかし、他キャリアのWAP 2.0互換端末などと較べると、余りにも使い難いものとなっております。
ここでは、そんなドコモ端末に実装されたiモード向け XHTMLとそれと併用する事とされているiモード向け CSS(i-CSS)について、参考までに解説する事とします。
ドコモは独自仕様のコンパクト HTMLをベースにしたiモード向けHTMLをiモードの記述言語としました。
ベースとなったコンパクト HTMLはW3Cにも標準化を求めて提出されましたが、結局標準化される事はありませんでした。
その後、国際的な携帯電話インターネット標準化団体であるWAP フォーラムがよりフル規格のウェブ仕様に近いWAP 2.0を策定し、WAP 1.0から採用していたKDDIは平成13年には対応するに至りました。
それ以来、KDDIと海外の携帯電話事業者は次々とWAP 2.0に対応していくようになり、ドコモもWAP 2.0対応を表明し、その結果策定されたのがiモード向け XHTMLと言う上っ面だけWAP 2.0に対応しているように見せ掛けた似非WAP 2.0仕様でした。
の仕様が混同されておりますが、本記事ではこれらを区別して解説する事とします。
iモード向け XHTMLはXHML モバイル・プロファイルを在来HTMLとの互換性を考慮して策定された仕様と言う事になっております。
しかし、iモード向け XHTMLで記述されたコンテンツは在来HTMLとして配信する事は出来ず、このためXHTMLを認識しない旧型端末では取扱う事さえ不可能であり、従って互換性に考慮する必要があったか否かは疑問に思えます。
iモード向け XHTMLの主な特徴は以下の通りです。
iモード向け XHTMLで書かれたコンテンツをそのように扱うには配信時のMIMEタイプを標準的なXHTML文書同様 application/xhtml+xml としなければなりません。
その結果、text/html しか認識出来ない旧型端末では不明のコンテンツと見なされ取扱いは出来ません。
これはXHTMLでは寧ろ当然ですが、問題は殆どの要素で有効である筈のid属性がXHTML対応iモード端末では<a>要素以外だとフラグメントとしては有効にならない事です。
iモード向け XHTMLでは<h○>要素などに対してid属性が定義されておりません。
本来なら見出しを終点アンカーとしたい場合には<h○>要素に直接id属性を与えればよいのを、わざわざ内容としてid属性を与えた<a>要素を含めないと当該要素はフラグメントとして機能しないのです。
<h2 id="section">〜</h2> ではダメで、<h2><a id="section">〜</a></h2> と書かないといけない訳です。結局、id属性は<a>要素のname属性を単純に置き換えるためだけに存在している事となります。
尚、<object>要素などでもid属性が使えますが、その場合は当該id属性はフラグメントとして機能しない事とされております。
本来、<font>要素は別の論理インライン要素に置換えて当該要素に適切なスタイルを当てると言うのがあるべき記述作法である筈です。
ところが、iモード向け XHTMLでは最も好ましくないとされる<font>要素を<span>要素に依るインラインスタイルシートに置き換える事が求められているのです。
基本的にiモード向け CSS(i-CSS)はインラインスタイルシートのみ対応しており、iモード向け XHTMLも在来HTMLとの互換性ばかりを考慮しているので、XHTMLにも<cite>要素や<dfn>要素などの論理インライン要素やclass属性などが存在せず、全て<font>要素代わりの<span>要素にしなければならないのです。
同様に、<center>要素やalign属性を与えた<div>要素は全てstyle属性を与えた<div>要素に置き換えます。
iモード向けCSS(i-CSS)は原則としてインラインスタイルシートとしてしか利用出来ないため、このような使い方しか出来ないのです。
但しアンカーへの色は動的に変化するためstyle属性と言う訳にはいかず、特例として<style>要素で記述しなければなりません。
iモード向け CSS(i-CSS)は<font>要素などの物理要素が使えないXHTML モバイル・プロファイルで表示色等の指定を行えるようにするために導入されたとしか思えないものです。
単純に物理要素・属性を置き換えるためのものなので、以下のような中途半端な実装となっております。
<body>要素及び<span>要素に対してstyle属性を与えなければなりません。
いわゆる論理インライン要素は全く定義されておらず、依って物理マークアップの延長としか言えないような使い方しか出来ないのです。
但し、アンカーへのスタイルに関してはstyle属性と言う訳には行かないので、例外的に<style>要素で記述する事となっております。
<link>要素で外部スタイルシートをリンクして使うと言う事が出来ません。
これが出来ないと正直CSSを導入する意味が無く、従ってi-CSSも導入する意味があるかどうか疑問です。
また、iモード向け XHTML専用のものなので、在来 HTMLでは利用出来ず、従って配信されるXHTML文書のMIMEタイプが application/xhtml+xml でないとインラインスタイルさえ機能しない事となります。
加えて、対応しているプロパティは基本的に在来 HTMLで利用出来る物理属性を置き換えるためだけのものなので、通常のCSSで可能な多彩な表現(ボーダなど)は殆ど利用出来ません。
iモード向けのXHTMLは、セットで利用すべきとされるiモード向けCSS(i-CSS)と共にWAP 2.0準拠のコンテンツの記述には向かないものです。
勿論、iモード向けのXHTML及びiモード向けCSS(i-CSS)はWAP 2.0の仕様には反していないので(正確にはWAP 2.0のサブセットとなっているので)、この仕様に準じて記述する下コンテンツをEZウェブなどの他キャリアWAP 2.0端末に提供する事は問題はありません。
ですが、その記述はXHTML モバイル・プロファイルと外部CSSの組合せと較べると遙かに面倒なものであり、わざわざ一キャリアだけのためにそのようにしてやる必要があるのかは疑問です。
また、iモード端末に関しては、まだまだXHTMLに対応していないムーヴァ端末が残っており、これらへの互換性も考慮する必要があります。
そう考えると、iモード端末にはXHTML 1.0 トランジッショナルを使うか、CSSが機能しないのを我慢するかのどちらかの方が良いのではないでしょうか。