参考資料・ドコモ端末のXHTMLについて。
エヌ・ティ・ティドコモ端末でも、XHTMLに対応したフォーマが主流となっており、また、これらの端末では独自のスタイルシートも利用出来ます。
しかし、他キャリアのWAP 2.0互換端末などと較べると、余りにも使い難いものとなっております。
ここでは、そんなドコモ端末に実装されたiモード向け XHTMLとそれと併用する事とされているiモード向け CSS(i-CSS)について、参考までに解説する事とします。
ドコモ端末がXHTMLに対応するまで。
ドコモは独自仕様のコンパクト HTMLをベースにしたiモード向けHTMLをiモードの記述言語としました。
ベースとなったコンパクト HTMLはW3Cにも標準化を求めて提出されましたが、結局標準化される事はありませんでした。
その後、国際的な携帯電話インターネット標準化団体であるWAP フォーラムがよりフル規格のウェブ仕様に近いWAP 2.0を策定し、WAP 1.0から採用していたKDDIは平成13年には対応するに至りました。
それ以来、KDDIと海外の携帯電話事業者は次々とWAP 2.0に対応していくようになり、ドコモもWAP 2.0対応を表明し、その結果策定されたのがiモード向け XHTMLと言う仕様でした。
iモード向け XHTMLの特徴。
- マークアップ言語としてのiモード向け XHTML
- XHTML文書と併用すべきスタイルシート言語・iモード向け CSS(i-CSS)
の仕様が混同されておりますが、本記事ではこれらを区別して解説する事とします。
マークアップ言語としてのiモード向け XHTML。
iモード向け XHTMLはXHML モバイル・プロファイルを在来HTMLとの互換性を考慮して策定された仕様と言う事になっております。
しかし、iモード向け XHTMLで記述されたコンテンツは在来HTMLとして配信する事は出来ず、このためXHTMLを認識しない旧型端末では取扱う事さえ不可能であり、従って互換性に考慮する必要があったか否かは疑問に思えます。
iモード向け XHTMLの主な特徴は以下の通りです。
- 在来HTMLとの互換性はありません。
- iモード向け XHTMLで書かれたコンテンツをそのように扱うには配信時のMIMEタイプを標準的なXHTML文書同様 application/xhtml+xml としなければなりません。
その結果、text/html しか認識出来ない旧型端末では不明のコンテンツと見なされ取扱いは出来ません。
- この事自体は正しいのですが、それなら在来HTMLとの互換性を考慮する必要があったのかと言う疑問点を生む事になります。
- 尚、iモード向け XHTMLで書かれたコンテンツを text/html で配信した場合、後述のiモード向け CSS(i-CSS)が機能しなくなり、従ってどうしても application/xhtml+xml で配信する必要がある事になります。
- また、WAP 2.0の仕様ではXHTML文書は application/vnd.wap.xhtml+xml とする事が推奨されており(application/xhtml+xml でも構いませんが)、従ってWAP 2.0には完全には準拠していない事となります。
- <a>要素などのname属性は単純にid属性に置き換えます。
- これは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>要素は全てstyle属性を与えた<span>要素に置き換えます。
- 本来、<font>要素は別の論理インライン要素に置換えて当該要素に適切なスタイルを当てると言うのがあるべき記述作法である筈です。
ところが、iモード向け XHTMLでは最も好ましくないとされる<font>要素を<span>要素に依るインラインスタイルシートに置き換える事が求められているのです。
基本的にiモード向け CSS(i-CSS)はインラインスタイルシートのみ対応しており、iモード向け XHTMLも在来HTMLとの互換性ばかりを考慮しているので、XHTMLにも<cite>要素や<dfn>要素などの論理インライン要素やclass属性などが存在せず、全て<font>要素代わりの<span>要素にしなければならないのです。
同様に、<center>要素やalign属性を与えた<div>要素は全てstyle属性を与えた<div>要素に置き換えます。
- align属性を与えた<h○>要素及び<p>要素はstyle属性でのインラインスタイルシートに置換えますが、CSSでのtext-alignプロパティはalign属性とは互換性がありません。
- <body>要素の色属性はstyle属性と<style>要素に置き換えます。
- iモード向けCSS(i-CSS)は原則としてインラインスタイルシートとしてしか利用出来ないため、このような使い方しか出来ないのです。
但しアンカーへの色は動的に変化するためstyle属性と言う訳にはいかず、特例として<style>要素で記述しなければなりません。
XHTML文書と併用するiモード向け CSS(i-CSS)の特徴。
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で可能な多彩な表現(ボーダなど)は殆ど利用出来ません。
- 例外として、インライン要素に対して background-colorプロパティが機能するようですが、これは例外中の例外でしょう。
結論・iモード向け XHTMLは使えません。
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に対応していないムーヴァ端末が残っており、これらへの互換性も考慮する必要があります。
- ムーヴァは廃止が予定されておりますが、初期のフォーマもまたXHTMLには対応しておらず、それへのサポートが引続き要求される事でしょう。
そう考えると、iモード端末にはXHTML 1.0 トランジッショナルを使うか、CSSが機能しないのを我慢するかのどちらかの方が良いのではないでしょうか。