WMLは、XML(Extensible Markup Language)をベースとして開発されたマークアップ言語である。WMLは、携帯電話、ポケットベル、PDA(Personal Digital Assistant)などのワイヤレスデバイスのユーザーインターフェースの動作を指定し、コンテンツを表示する目的で開発されている。
WAP(Wireless Application Protocol)フォーラムは、ワイヤレス通信のオープンな標準技術の開発の推進を目的として設立された、ワイヤレス業界の団体である。WAPフォーラムでは、WMLの正式な仕様を策定している。WMLの仕様(WMLのDTD(Document Type Definition)が含まれる)は、WAPフォーラムのWebサイト(http://www.wapforum.org)から入手することができる。
本マニュアル(『WMLリファレンスガイド』)は、WAPフォーラムが策定したWMLの仕様に基づいて作成されている。
XMLの正式な仕様については、W3CのWebサイト(http://www.w3.org/)から入手することができる『Extensible Markup Language (XML), W3C Proposed Recommendation』を参照。
WMLは、以下の特徴を持つ、さまざまなデバイスをサポートすることができるように開発されている。
現在、WMLをサポートしているデバイスは主に以下の2つのカテゴリに分類することができる。
将来は、音声認識など、高度な機能を備えたハンドヘルドデバイスの登場が予想されるが、そのようなデバイスの多くがWMLをサポートすると予想される。
WMLでは、異なる機能を備えたさまざまなデバイスをサポートすることができるため、本マニュアルでは、WML対応デバイスを「最小公分母デバイス」または「基準デバイス」と呼ぶ。基準デバイスは以下の特徴を持つ。
ACCEPT、OPTIONSという2つの設定可能なファンクションキーを備える。2つのキーのラベルは、キーの上にあるディスプレイに表示される。
PREVキーを備える。
ここでは、WMLのコードを記述する際の構文規則について簡単に説明する。構文の例や構文規則の詳細については、『UP.SDK Developer's Guide』の1章を参照。
WMLでは、XMLの文書文字セット(現在は、Universal Character Set of ISO/IEC-10646(Unicode 2.0))を使用し、Unicodeの文字セットの正規のサブセット(US-ASCII、ISO-8859-1、UTF-8など)をサポートする。UTF-8以外の文字セットを使用するのでない限り、完全なUnicode(UCS-4)を使用してエンコードを行う必要はない。
HTMLとは異なり、WMLでは大文字と小文字を区別する。タグ、属性値、列挙型の属性値はすべて小文字で指定する必要がある。また、カードや変数に名前を付ける際にも、大文字と小文字を区別する必要がある。たとえば、variable1、Variable1、vaRiable1は、すべて異なる変数と見なされる。
WMLでは、以下の文字を空白文字として使用することができる。
注意書きがある場合を除いて、WMLでは連続する改行、キャリッジリターン、タブ、スペースは1つのスペースに変換される。つまり、ある文字の後ろの空白文字は無視される。たとえば、UP.Phoneは例1のコードと例2のコードを等しいと解釈する。
| 例1 | Sample 2 | |
|---|---|---|
|
<wml><card><p> テキスト
テキスト
</p> </card> </wml> |
|
<wml> <card> <p> テキスト テキスト </p> </card> </wml> |
本マニュアルのコード例では、コードを読みやすくするために改行とタブを使用してコードが記述されている。実際にコードを記述する際には、このような書式設定は不要である(UP.Phoneへの送信前に、UP.Link Serverによって削除される)。
WMLのデッキを作成する際には、各ファイルの先頭で、次のようにXMLの文書のタイプの宣言を行う必要がある。
wml_1.1.xml">
OutputDeck()という関数を使用すると、すべてのデッキにこのプロローグコードを自動的に追加することができる。UP.SDKには、WMLサービスの作成におけるルーチン作業を自動化することができるPerlのユーティリティがいくつか添付されているが、この関数はその1つである。OutputDeck()の詳細については、『UP.SDK Tools and APIs Reference』の5章を参照。
WMLメッセージのエンティティ(MIMEタイプ)を正しく作成するには、文書のタイプを示すプロローグコード(「文書のタイプを示すプロローグコード」の項を参照)の前に、次のようなコンテンツタイプヘッダを記述する必要がある。
文書のタイプを示すプロローグコードと同様に、UP.SDKには、正しいHTTP応答の作成を自動化するユーティリティが添付されている。詳細については、『UP.SDK Developer's Guide』の3章と『UP.SDK Tools and APIs Reference』の7章、8章を参照。
WMLのタグのほとんどは、1つまたは複数の属性を持つ。属性は、必ず指定しなければならないものと、省略可能なものに分類される。属性を使用して、デバイスがタグを処理する方法を指定することができる。WMLのステートメントの構文はコンテンツの有無によって異なるが、属性は次のように、常に開始タグの中に指定する。
属性値は、シングルクォーテーション(')かダブルクォーテーション(")で囲む。また、属性と属性値のペアを複数指定する場合には、それぞれのペアを空白文字(「空白文字」の項を参照)で区切る。ただし、属性、等号(=)、属性値の間に空白文字を入れてはならない。
UNIXのシェル変数と同様に、書式設定付きのテキスト、URL、選択項目、デフォルト値を指定するWMLコードにおいて変数を使用することができる。変数に値を代入するには、$(myvar)という構文を使用して変数を参照する。
注
変数は$myvarという構文を使用して参照することもできるが、ほとんどの場合、$(myvar)という構文を使用して参照した場合と同じ結果が得られる。しかし、カッコ(())を使用すると正しい値を確実に代入することができるので、$(myvar)という構文を使用することをお勧めする。
UP.Browserは、文脈に従って、URLのエスケープ規則を自動的に適用する。URLの文字列内の変数の通常のエスケープ規則を無効にしたい場合には、以下のオプションを使用して特定の動作を強制的に実行することができる。
URL文字列以外の場所で上記の変数の参照を行っても、無視される。
WMLでは、<、>、'、"、&という文字は予約されている。これらの文字をテキスト中に表示したい場合には、以下のように記述する。
セミコロン(;)は文字の一部であるため、省略してはならない。省略した場合、WMLのコンパイラがエラーメッセージを表示する。
&を使用して指定しなければならない。