iモードXHTML変換仕様
※iモードXHTMLは、Durian 4.2以降で対応しています。
iモードXHTMLの構文
iモードXHTMLのバージョン
基準マークアップ言語として使用するiモードXHTMLは、iモードXHTML 1.0が使用できます。
記述ルール
iモードXHTMLの仕様に従い、コンテンツは次のように記述します。
- Content-Typeヘッダを application/xhtml+xml で出力する(※1)
- 1行目にXML宣言を記述する
- iモードXHTMLのDOCTYPE宣言を記述する
以下にサンプルを示します。
iモードXHTMLサンプル(sample.html)
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/1.0) 1.0//EN" "i-xhtml_4ja_10.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" /> <title>iモードXHTMLサンプル</title> </head> <body> <p><span style="color:blue">iモードXHTMLのサンプルページです。</span></p> </body> </html>
キャラクタエンコーディング
キャラクタエンコーディングは、XML宣言のencoding属性で指定します。Shift_JISやEUC-JP、UTF-8が使用できます。
絵文字
絵文字を記述する場合は、通常のiモード絵文字の指定方法(*****;/*****;/Shift_JIS 2バイトコード)が使用できます。
DoCoMoの絵文字「晴れ」の記述例
&#63647;
絵文字一覧はNTTドコモの技術情報サイトを参照してください。
変換仕様
変換先マークアップ言語
アクセスした端末種別により、変換後のマークアップ言語が次のように決定されます。
端末種別 | 変換後のマークアップ言語 |
---|---|
docomo XHTML対応機種 | iモードXHTML |
docomo XHTML非対応機種 | CHTML |
au XHTML対応機種 | au向けXHTMLBasic |
SoftBank XHTML対応機種 | SoftBank向けXHTML |
SoftBank XHTML非対応機種 | SoftBank向けHTML |
PC | HTML |
変換ルール
XHTML対応機種の場合、次の項目が各キャリアの対応形式に変換されます。
- DOCTYPE宣言
- style属性で指定された-wap-input-formatプロパティ
- style属性で指定された-wap-marquee-loopプロパティ
XHTML非対応機種の場合、次の項目が各キャリアの対応形式に変換されます。
- style属性で指定された-wap-input-formatプロパティ
また、次のような共通変換が行われます。
- エンコーディング変換
- metaタグ変換
- 絵文字変換
- リソースセレクト
- 相対URL変換
- セッション情報付加
- オプションパラメータ付加
- キャッシュ制御
- ホワイトスペース除去
- 画像変換
- 端末情報プロパティの設定
- ユーザ情報プロパティの設定
留意点と制限事項
キャラクタエンコーディングの判別
iモードXHTMLのキャラクタエンコーディングは次のルールに従って判別されます。文字化けを防ぐためにも正しく設定を行ってください。
キャラクタエンコーディング判別を[自動判別]に設定している場合 もしくは Durian 4.4以前
- HTTPレスポンスヘッダContent-Typeにcharsetパラメータがあれば、charsetパラメータで指定されたキャラクタエンコーディングを使用します
- iモードXHTMLの先頭にUTF-8のBOMがあれば、UTF-8をキャラクタエンコーディングとして使用します
- バイト列の並びからShift_JIS・EUC-JP・ISO-2022-JPを自動判別します
キャラクタエンコーディング判別を[手動設定]に設定している場合
- 管理ツールでキャラクタエンコーディング名に指定したキャラクタエンコーディングを使用します
CSS
iモードXHTMLでは、外部CSSには対応していません。色設定やアライメント設定は、style属性で指定します。
ホワイトスペース
タグの属性内に含まれるホワイトスペース(半角スペース、タブ、改行文字)が削除されたり、半角スペースに変換されます。inputタグのvalue属性にホワイトスペースを使用している場合などは注意が必要です
POST変換
Yahoo!ケータイ C2型端末は、POSTに対応していないため、formタグのmethod属性は常にgetに変換されます。
JSP
Durianには、URLへのセッションID自動付加機能があるため、リンクやフォームの送信先URLをURLエンコードする必要はありません。リダイレクトする場合でもURLエンコードは不要です。
JSPからインクルードアクション(
JSPの制限・注意事項
- リクエストおよびセッションの属性で、"durian." から始まる名前はDurianで予約されています(Filterのみ)
- JSPのエラーページはリソースセレクトされません(Filterのみ)
- ユーザ情報プロパティを使用している場合、HttpServletRequestクラスのgetInputStreamメソッドやgetContentLengthメソッドは使用できません(Filterのみ)
- インクルード先やフォワード先のページに対してリソースセレクトは行われません(Proxyのみ)
Servlet
ServletからJSPへフォワードした場合は、そのフォワード先ページがコンテンツ変換されます。
Servletの制限・注意事項
- リクエストおよびセッションの属性で、"durian." から始まる名前はDurianで予約されています(Filterのみ)
- ServletからHTMLのインクルードが正しく行えません(Filterのみ)
- ユーザ情報プロパティを使用している場合、HttpServletRequestクラスのgetInputStreamメソッドやgetContentLengthメソッドは使用できません(Filterのみ)
絵文字
iモードXHTMLで絵文字を記述する場合は、通常のiモード絵文字の指定方法(*****;/*****;/Shift_JIS 2バイトコード)が使用できます。
コメント・ホワイトスペース・改行の削除
端末に送信されるデータを圧縮するため、コメントや連続するホワイトスペース(CR LF タブ スペース)を次のルールで統合及び削除します。
※Durian 4.3以降では、コメントを削除しない設定が可能です
- preやscript、style要素内のホワイトスペースは削除しない
- 1つ以上のホワイトスペースは、1つの半角スペースに変換する
- 日本語文字間に改行(CRおよびLFおよびCRLF)が1つある場合は、改行を削除する(この場合に限り、半角スペースを入れない)
- 日本語文字間に改行以外のホワイトスペースや2つ以上のホワイトスペースがある場合は、1つの半角スペースに変換する
変換前
<-- Javaのソースコード --> <pre> public class DurianFilter implements Filter { public DurianFilter() {} } </pre> <p> <a href="next.html" accesskey="1">次へ</a> </p>
変換後
<pre> public class DurianFilter implements Filter { public DurianFilter() {} } </pre><p><a href="next.html" accesskey="1">次へ</a></p>