WAP 1.0端末での処理。
- コードを全面的に刷新した後継作・しらぎくモバイルシステム VIが公開されました。
今後、新規にモバイルサイトを構築される方には、しらぎくモバイルシステム VIのご利用を強く推奨いたします。
- しらぎくモバイルシステム VIは従来のしらぎくモバイルシステムとの互換性はありません。
- このため、制作者は当面従来のしらぎくモバイルシステムについても、適宜アップデートを続けていく予定です。
- PC向けに書かれたフル規格のHTML文書に対しては、しらぎくモバイルシステムFULL(開発名・HOMAKI & NAKAMA)をご利用ください。
- 利用出来るサーヴァが限られておりますが、絵文字の変換さえ出来れば良いと言う方には、ドコモ端末の絵文字を変換するだけのスクリプト・しらぎく絵文字変換スクリプトもお勧めしております。
WAP 1.0端末(EZウェブ旧世代機, オープンウェーブ社海外端末)では以下のように処理されます。
テキスト処理。
一般のテキスト処理。
- 「&」「<」「>」は全て実体参照に置換えられます。
- 「$」はWMLの仕様に従って「$$」に置換えられます。
- <pre>要素外での連続する空白, タブ及び改行文字は、全て半角空白一個に纏められます。
- <pre>要素内の空白は「 」、改行は「<br />」にそれぞれ置換されます。
タグのテキスト処理。
- 要素名は全て小文字に変換されます。
- 属性名も全て小文字に変換されます。
- 属性に関して、最小化表記となっている場合は、「属性値="属性値"」の形に変換されます。
- また、属性値は全て「"」で囲まれ、「
"」は実体参照に置換えられます。
HTML文書のタグ変換処理。
ここで挙げていないタグは、全て無視されます。
1. <html>要素開始タグ。
lang属性(xml:lang属性も可)の値を、言語情報として取得します。
- デフォルトの言語は日本語と見做しております。
- 現状では、日本語と英語にしか対応しておりません。日本語以外は全て英語のメッセージとなります。
- <html>要素以外のlang属性は全て無効です。
2. <title>要素。
内容を文書の題名として取得します。
尚、<title>要素を記述していない場合の題名は不定な文字列となります。
- <title>要素の内容は、WMLでは<card>要素のtitle属性値に入れられます。この為、「
<」「>」及び「"」は実体参照に変換する必要があります。
3. <base>要素。
href属性で指定されるURLを相対URLの基準とします。
尚、正当な仕様では相対URLが出てくる前に一回だけ記述出来る事になっており、しらぎくモバイルシステムでもこれに違背した場合は相対URLの扱いを保障出来ません。
7. リスト要素。
<dl>, <ul>及び<ol>要素内では、以下のように扱います。
- 内容は全てリストアイテム要素となるようにします。
- 余白取りのために、リストアイテム要素で無い要素をリスト要素の直下に置いている場合、その扱いは不定になります。
- 端末によって無理矢理リストアイテムにされたり、当該要素を削除されたりします。
- リストアイテムの開始タグが、リスト要素の直下に無い場合。
- リストアイテムの終了タグが正しく終わっていない場合。
- これらの場合は、一番内側のリスト要素の直下になるまで閉じていない要素を閉じ(正当なリストアイテム要素を含む)、その上でリストアイテムを開始するなどします。
- この為、仕様で認められているリストアイテム要素の終了タグ省略も可能になります。
- WAP 1.0での扱い。
- WML 1.1にはリスト要素が定義されておりません。
このため、要素の入れ個数に応じて行頭に「 」を適宜挿入し、必要に応じてマーカを付けるなどの措置を執っております。
8. <h○>要素, <p>要素, <address>要素及び<pre>要素。
全て<p mode="wrap">要素に置換されます。
また、属性に関して、以下の読替を行います。
- リスト要素外の<h○>要素及び<p>要素
-
- align属性が指定されている場合
- 変換前のalign属性が変換後のalign属性に反映されます。
- align属性が指定されていない場合
- 設定ファイルでの指定に従ったalign属性が附与されます。
- リスト要素内の<h○>要素及び<p>要素
- 開始タグの箇所に<br />要素が挿入され、上記の読替えによるタグは出力されません。
当然、align属性も無効になります。
- 尚、リスト要素は<p align="left">要素に変換されます。従ってリスト要素内では<h○>要素及び<p>要素は常に左寄せとなります。
その他の属性は削除されます。
9 <blockquote>要素。
<blockquote>要素の前後に、以下のメッセージが付与されます。
- <html>要素にてlang属性値に「ja」を含んでいない場合は、以下のメッセージは英語になります。
<blockquote>要素タグは一切出力されません。
但し、内容となるテキストに対して、行頭に必ず「> 」が付与されるようになっております。
- <bloakquote>要素を字下げの機能を実現する目的で使わないようにして下さい。
<blockquote>開始タグ直前。
<blockquote>要素にtitle属性が付与されていない場合は、以下の出力になります。
<p align="left" mode="wrap"> *以下引用。</p>
title属性が付与されている場合は、以下の出力になります。
<p align="left" mode="wrap"> *<i>○○</i>より。</p>
- 但し、既に<p align="left" mode="wrap">要素内にある場合は、<p align="left" mode="wrap">要素を改めて作らず、代わりに直前に<br />要素を書出します。
<blockquote>終了タグ直後。
<blockquote>終了タグの直後には、以下のように出力されます。
<p align="left" mode="wrap"> *引用ここまで。</p>
10. <div>要素及び<center>要素。
WML 1.1ではテキストは全て<p>要素となっていなければなりません。
<div>要素及び<center>要素は、そこから先で出力する<p>要素のalign属性値を変更する働きのみとなります。
尚、変更前と変更後で変わらない状態で<p>要素を改めて出力する場合、一旦<p>要素を閉じずにその箇所に<br />要素を出力します。
11. <form>要素。(平成17年 9月 9日 更新)
WMLでは<form>要素に対応する機能を実現する事は極めて難しいものとなっております。
このためしらぎくモバイルシステムでは、WAP 1.0端末には<form>要素は一切出力しませんでしたが、第3.180版(平成17年 9月 9日)以降から擬似的にフォーム機能を実現する処理を追加しました。
フォーム機能の概要。
WAP 1.0端末では、入力フォームから入れられた値を変数に収納し、それを送信するクエリに反映させると言う方式を採っております。
これに関しての詳細は割愛させて頂きますが、しらぎくモバイルシステムでは以下のように処理が分かれます。
- 変数を初期化する処理
- クエリの送信に関する指定
- フォームの本体
変数を初期化する処理。
変数の初期は処理は単一のカードに変換されます。
このカードはフォームに入る前に自動的に処理されます。
また、<input type="reset">要素を指定した場合も、このカードにジャンプする事で変数が初期化されます。
フォーム本体。
具体的には、以下のように変換されます。
- <input type="text">要素
- <input type="password">要素
- WMLの<input>要素に変換されます。
有効な属性はname, value, istyleのみです。
istyle属性は値に合わせたformat属性に変換されます。
- <input type="radio">要素
- 同一のname属性を持つ<input type="radio">要素を一纏めにして、<select>要素に変換します。
このとき、<input type="radio">要素直後の文字列を<option>要素の内容とします。
- <input type="checkbox">要素
- 「はい」「いいえ」を内容とする二つの<option>要素を持つ<select>要素に変換します。
このとき、checked属性がついているものは「はい」が先行し、そうで無いものは「いいえ」が先行します。
- 「いいえ」を指定した場合、空文字列がクエリ値として送られます。
- <input type="submit">要素
- 端末のacceptソフトキーに反映させます。
具体的には<do type="accept">要素となります。
この要素の内容は<form>要素のmethod属性値などにより異なったものとなります。
また、以下の点にご注意下さい。
- 複数の<input type="submit">要素を指定した場合、そのうちのどれかのvalue属性値をソフトキーに反映させます。
- <input type="submit">要素のname属性はクエリに送信されません。
また、この要素はWML文書本体外に移動されるため、当該要素があった位置には「○○はACCEPTキーを押して下さい」と言う文字列が置かれます。
- <input type="reset">要素
- 端末のsoft1ソフトキーに反映させます。
具体的には<do type="soft1">要素となります。
この要素の内容は変数初期化カードへのURLをhref属性値に持つ<go>要素となります。
また、以下の点にご注意下さい。
- 複数の<input type="reset">要素を指定した場合、そのうちのどれかのvalue属性値をソフトキーに反映させます。
- <input type="reset">要素のname属性はクエリに送信されません。
- soft1ソフトキーは海外端末では一部optionsキーとなる機種もあります。
また、この要素はWML文書本体外に移動されるため、当該要素があった位置には「○○はSOFT1キーを押して下さい」と言う文字列が置かれます。
- <textarea>要素
- 内容の連続する改行・タブ・半角空白を一纏めにして、それをvalue属性値とする<input type="text">要素に変換します。
istyle属性は有効ですが、値に合わせたformat属性に変換されます。
- <select>要素
- WMLの<select>要素に変換します。
multiple属性は無視します。
内容の<optgroup>要素の開始・終了タグは無視します。
また、内容の<option>要素でselected属性がついているものは、先頭に移されます。
- <option>要素
- WMLの<option>要素に変換します。
value属性が無い場合は、要素の内容をvalue属性値とします。
- <fieldset>要素
- 現ヴァージョンでは開始タグ・終了タグとも無視します。
- <label>要素
- 現ヴァージョンでは開始タグ・終了タグとも無視します。
但し、<input type="radio">要素及び<input type="checkbox">要素が<label>要素に含まれている場合には、当該要素の直後の文字列をこの要素の終了タグまで認識するものとします。
具体的な処理結果に関しては、別文書・WAP 1.0端末でのフォーム変換変換処理例に挙げておりますのでご覧下さい。
注意。
WAP 1.0機では、以下の制約があります。
- 白黒専用機では、大き過ぎるフォーム(<form>要素の内容が1200バイトを越えた場合)は表示出来ない場合があります。この場合、「お使いの端末では大き過ぎて表示出来ない」旨が表示されるか、端末処理エラーとなります。
- <input type="submit">及び<input type="reset">要素は、一つのみ端末のソフトキーに反映されます。また、これらの要素はクエリとして送信されません。
- フォーム内(<form>要素内)のフラグメント(id属性及び<a>要素のname属性)は一切無効となります。
- フォームの入力欄(<input>要素など)の前後の文字列は出力されない場合があります。
確実に表示させたい場合は、フォームの入力欄とは別のブロックレヴェル要素に記述するようにして下さい。
例えば、
<p>キーワード: <input type="text" name="w"></p>と言う記述に於いて、
キーワード:が表示されない場合があります。この場合、
<dl><dt>キーワード</dt><dd><input type="text" name="w"></dd></dl>とすると、確実に表示出来るようになります。
13. <hr>要素。
「<p align="left" mode="nowrap"> ------------</p>」に変換されます。
尚、「-」の数は端末から送られてくる画面の行当りの文字数によります。
15. 論理インライン要素(<a>要素を除く)。
以下の要素に関しては、<i>要素に置換されます。
- <em>要素。
- <cite>要素。
- <q>要素。
- <var>要素。
- 尚、<q>要素に関しては当該要素を「"」で囲みます。
また、以下の要素に関しては、<b>要素に置換されます。
- <strong>要素。
16. <a>要素。
name属性は分割点(後述)になります。
- この場合、既存のid属性は無視されますが、仕様上双方の値は一致していなければならないので、文法違反で無い限り問題は無い筈です。
href属性値に関しては、以下のようになります。
https://スキームかftp://スキームが与えられている場合。- WAP 1.0端末では処理不能のため、アンカーを生成しません(<a>要素のタグは無視されます)。
mailto:が与えられている場合。- そのまま出力します。
tel:スキームが与えられている場合。- WAP 1.0でのスキームに変換して出力します。
- フラグメント名のみ指定されている場合(href="#…"属性)。
-
- カラー端末ではそのまま出力します。
- 白黒端末では、自ページの当該フラグメントに該当する切片を表示させるCGIへのURLに変換されます。
- サイト内の画像を指定していると判定された場合。
- 当該画像を表示させるページを自動作成するCGIへのURLに変換します。
- <a>要素に「
rel="external"」属性が付いている場合(平成17年 8月26日)。 - <a>要素に「
rel="external"」属性が付いている場合はサイト内の画像で無い限り、サイト外にあるリソースと見なします。従って、「
rel="external"」属性を付けた場合、サイト内部のページであっても、当該ページを表示させるCGIのURLには変換されず、そのまま出力されます。 - サイト内のページを指定していると判定された場合。
- 当該ページを表示させるCGIへのURLに変換します。
尚、フラグメント名も指定している場合は、指定されたフラグメントが付与されます。
- サイト外と判定された場合。
- そのまま出力します。
17. <object>要素。(平成17年 9月11日)
- 第3.190版(平成17年 9月11日)から、<object>要素に対応しました。
<object>要素はtype属性が静止画像(image/gif, image.jpeg及びimage/png)で且つdata属性がある場合に限り有効となります。
<object>要素で静止画像を扱う場合は、内容(次の</object>タグまでの記述)からタグを全て取去ったものをalt属性値とし、data属性値をsrc属性値とする<img>要素に変換して<img>要素処理に引き渡します。
18. <img>要素。
<img>要素の扱い。
<img>要素は、設定により以下のようになります。
- 画像をインライン表示にしない設定にしている場合
- 強制的にブロックレヴェル要素化されます。
画像をインライン表示にする設定にしていなければ、強制的にブロックレヴェル要素化されます。
すなわち、インラインの画像は前後で強制的に改行されます。
具体的には、開いている段落/見出し要素及びアンカーを一旦閉じて、<img>要素を<p align="cneter" mode="wrap">要素の内容にして出力したあと、一度閉じた要素を再度開きます。
- アンカーが閉じられていない場合、<center>要素内にもアンカーが降ろされます。
- 複数の<img>要素がある場合、縦方向に並ぶ事になります。
- 画像をインライン表示にする設定にしている場合
- <img>要素外での処理は行なわれません。
- 複数の<img>要素がある場合、通常のHTML文書と同様、行方向に並びます。
尚、画像をインライン表示にする/しない設定のデフォルト設定は、以下のようになっております。
- 第3.111版(平成17年 5月19日)以降からお使いの方は、デフォルトが「画像をインライン表示にする設定」になっております。
- 第3.111版(平成17年 5月19日)より前からお使いの方は、デフォルトが「画像をインライン表示にしない設定」になっております。
いずれの場合も設定ファイルで画像をインライン表示にする/しない設定の切替が可能になっております。
src属性値の扱い。
この他、src属性値に関して以下のような処理が行われます。
- 内部のJPEG画像と判定された場合。
- 当該JPEG画像を機種により振分けるCGIへのURLに変換します。
- このCGIは現在のところ液晶の解像度に応じて画像を選択する機能しか搭載しておらず、よってJPEG非対応環境への配慮はしておりません。
- 内部のGIF画像と判定された場合。
- 当該GIF画像を機種により適切なものに変換するCGIへのURLに変換します。
- サイト外と判定された場合。
- そのまま出力します。
分割機能について。
WML 1.1には、フラグメントの概念がありません。
代りに、カードと言う概念があります。
この為、フラグメントIDに関しては、カード分割と言うやり方で対処するものとします。
- 尚、白黒専用端末はファイル容量が1.4キロバイトしかないため、カード分割ではなくファイル分割となります。また、白黒専用端末ではid属性や<a>要素のname属性以外にも、画像が二枚以上出てきた場合やファイル容量が約1キロを越えた場合にも分割が行われます。