モバイルCGI研究(EZweb編)
|
2001年9月2日更新 |
このページでは HDML を用いて EZweb 用のページを作成する際にぶち当たる問題点の例を取り上げています。トラブルに見舞われたら、とりあえずこのページに挙げてある項目を1つずつ確認してみてください。
HDML の動作確認・バグつぶしには Openwave の UP.Simulator がお薦めです。このソフトを使えば、 HDML がコンパイルエラーになった場合に、メッセージウィンドウ( "Phone Information" と書いてある黒いウィンドウ)にエラーメッセージと、そのエラーを含む行番号が表示されます。
<HDML> タグの version オプションを指定していない場合、コンパイルエラーになります。特殊な機能を用いていなければ "version=3.0" でうまくいきます。
<HDML> タグの public オプションを "true" にしていない場合、その HDML デッキは特定のサーバからしかリクエストできないことになります。
<HDML> タグの markable オプションを "true" にしていない場合、その HDML デッキは「お気に入り」に登録できないことになります。なお、 "markable=true" と書いておけば、"public=true" は省略できます。
HDML には <HR> タグはないので、勝手に書くとコンパイルエラーになります。 <HR> タグの代用としては "<CENTER>--------<BR>" または高さ 1px の画像などを用いるのがいいでしょう。
CGI を使えるのなら、環境変数 "HTTP_X_UP_DEVCAP_SCREENCHARS" を用いて表示可能な桁数を調べることができますので、以下のようなスクリプトで $hr という変数を作り、 <HR> タグの代用をさせるとよいでしょう。
Perl # テキスト罫線 $hr の作成 ($screen_x,$screen_y) = split(/,/,$ENV{'HTTP_X_UP_DEVCAP_SCREENCHARS'});
$hr = '-' x $screen_x . '<BR>';
<CENTER> 、 <RIGHT> 、 <LINE> 、 <WRAP> などのタグは閉じる必要がないので、 "</CENTER>" 、 "</RIGHT>" 、 "</LINE>" 、 "</WRAP>" などを書くとコンパイルエラーになります。なお、 <CENTER> と <RIGHT> は改行によって解除され、 <LINE> は <WRAP> で、 <WRAP> は <LINE> で、それぞれ解除されます。
CHOICE カード内の <CE> タグには成形テキストを1つしか入れられないので、 <CE> タグ以降では <BR> タグを使えません。 <CE> タグ内のテキストがスクロールするのを防ぎたければ、 <CE> タグのすぐ後ろに <WRAP> タグを書けば大丈夫です。
最初の <CE> タグが出てくるまで(<CHOICE> タグと <CE> タグの間)は選択肢以外のテキストを収めることが出来るので、 <BR> タグを書いてもエラーになりません。
<ACTION> タグは、カード(もしくはデッキ)の先頭、すなわち、 <HDML> 、 <DISPLAY> 、 <CHOICE> 、 <ENTRY> 、 <NODISPLAY> タグのすぐ後に書く必要があります。
オプションの値が空白(半角スペース)を含んでいる場合には、シングルクオート(')またはダブルクオート(")で囲む必要があります。また、2バイト文字を含んでいる場合もクオートで囲んだ方がいいでしょう。
label オプションや default オプション以外の値に2バイト文字を使う場合には、 URL エンコード(本当は URI エスケープと言うらしい)をする必要があります。
↓こちらのフォームに文字列を入力して送信すれば、 URL エンコードした結果を表示します。どうぞご利用下さい。
オプションの値に含まれる "<"、">"、"$"などの文字は URL エンコードする必要があります。
<ACTION> タグ内で、 label オプションを省略できない場合があるので、注意が必要です。
type | label |
accept | 任意 |
help | 必須 |
prev | 無視 |
soft1 | 必須 |
soft2 | 必須 |
send | 必須 |
delete | 必須 |
HDML にはいくつかの予約文字があるので、ソース内では次の表にあるように書き換えなければなりません。最後のセミコロン(;)の書き忘れに注意。
文字 | エスケープシーケンス |
< | c; または < |
> | e; または > |
" |  または " |
& |  または & |
$ |  または &dol; |
ファイルの拡張子が ".hdml" になっていないと、 HDML ファイルとして認識されないことがあります。
端末側で HDML ファイルと認識されるためには、 HDTP ヘッダが出力されている必要があります。 HDML 対応のプロバイダで HDML ファイルを出力するときは特に気を付ける必要がありませんが、 CGI でファイルを出力するときや、自分でサーバの設定をするときには気を付けてください。
Perl # HDTPヘッダの出力例 print "Content-type: text/x-hdml;charset=Shift_JIS\n\n";
EZwebでは、モノクロ端末で 1.4KB 、カラー端末で 7.5KB が上限値です。 UP.Simulator でコンパイル後のデータ量をチェックすることができますが、実機と多少異なるらしいので、 1.2KB 程度を目安に設計した方がいいようです。
EZweb で認識できる(日本語の)文字コードは Shift_JIS のみです。( EUC-JP も使えそうですが、未確認です。)
CGIぽんはINFOJAMの安価で快適なサーバを利用しています。
|
CGIぽん (C)Copyright 2000-2002 OGATA,Tetsuji
|