WMLについて(参考資料)。

WMLとは。

EZウェブの旧世代機(KDDI旧世代機と旧ツーカー)が採用しているWAP 1.0(ワイヤレス・アプリケーション・プロトコル…無線端末向けのインターネット規格)では、標準記述言語にHDMLを採用しておりますが、この他にWMLでの記述も可能となっております。

WMLとは「ワイヤレス・マークアップランゲージ」の略で、「無線端末専用の記述言語」の意味です。

日本ではHDMLをWAP 1.0の標準記述言語と思っている方も多いですが、実はHDMLはWAP 1.0の仕様が纏まる前に導入されたもので、WAP 1.0の標準記述言語はこのWMLとなっております。

このため、日本国内でも多くのウェブサーヴァがWMLをサポートしております(HDMLはサポートしていないサーヴァも多い)、

また、開発ツールとして、PC向けのウェブブラウザとして知られるオペラが使えます。

  • オペラ以外のPC用ブラウザは対応していないようです。
  • オペラはPC用のブラウザですので、携帯電話での見え方とは全く異なりますが、文法通りに書けているか、或いはリンクが正しく書かれているかなどの確認には充分使えます。
  • 実はオペラ社はWAPに関して否定的な見解を持っております。しかしながら携帯端末市場で有利に展開するためにWMLのサポートを行っているようです。

今日ではEZウェブ側のサーヴァにより、HTMLで書かれたコンテンツも閲覧出来ますが、どうしてもネイティヴな言語を使いたいのであれば、HDMLの代りにWMLで作成するのも一つの方法です。HDMLで出来る事はWMLでも可能です。

KDDI社は平成20年 3月末日までに旧世代携帯電話のサーヴィスを全て終了しており、WAP 1.0端末は全てこれに該当します。従って、今日では既にWMLを学習する必要は全くありません。興味のある方のみご覧下さい。

  • 尚、WMLはXHTML同様、XMLの応用言語です。この事はXHTMLとの親和性が非常に高い事を意味します。実際、XHTMLからWMLへの変換はそれほど難しくありません(当然HTMLからの変換も容易です)。

WMLの主な要素。

ここでは旧世代機でも問題無く利用出来るWML 1.1で解説します。

  • 参考までにWAP 1.0で使えるWMLのヴァージョンは1.1と1.3の二種があります。
  • WML 1.3は一部旧型機で対応出来ないものがあります。
  • 尚、WAP 2.0向けにWML 2.0も策定されましたが、こちらはXHTMLベーシックをXMLの手法で拡張したものとなっております。

WMLの文書型宣言と<wml>要素。

WML 1.1の文書型も幾つかありますが、最も使いやすいオープンウェーブ社の言語型宣言を紹介します。

WMLでは、文書型宣言でルート要素として<wml>要素が宣言されています。

WMLの文書型宣言と<wml>要素の書式は以下の通りです。

<?xml version="1.0" encoding="文字コード"?>
			<!DOCTYPE wml PUBLIC "-//PHONE.COM//DTD WML 1.1//EN" "http://www.openwave.com/dtd/wml11.dtd">
			<wml></wml>
  • 一行目はXML宣言で、文字コードも指定します。
  • 二行目が文書型宣言です。
  • WML 1.1ではxml:lang属性及びxmlns属性は定義されておりません。
  • 文書型宣言内のシステム識別子のURIは元来「http://www.phone.com/dtd/WML 11.dtd」でしたが、平成17年 5月に「phone.com」ドメインが廃止され、システム識別子のURIも「http://www.openwave.com/dtd/wml11.dtd」に変更されました。

<card>要素 - カードを表わす。

カードとデッキの概念。

WMLにはカードデッキと言う概念があります。

HTMLでは 1ページ 1ファイルの対応関係がありますが、WMLでは複数ページが 1ファイルに対応出来ます。

個々のページをカードと呼び、カードを纏めたファイルをデッキと呼びます。

すなわち、WMLでは「複数カードが 1デッキに対応している」というのが正しい言い方になります。

実際のカードの記述。

WMLでは個々のカードを<card>要素とします。

具体的には、<card>要素は以下のように記述します。

<card title="表題" id="カード名"></card>

title属性は表題を表わします。一応、カードに対する表題となっており、必須では無いのですが、HTMLでの<title>要素に対応する要素が無いため、一番初めのカードのtitle属性にデッキの題名を付けるといいでしょう。

id属性はカードの名前を表わします。必須ではありませんが、一つのデッキに複数のカードが入っている時にはカードを撰ぶのに名前が必要になります。

  • カード名は半角英数字と「-」「_」のみが使えます。
  • カードの内容としては、ブロックレヴェル要素に限られます。しかしながら、WML 1.1では<p>要素以外にブロックレヴェル要素はありません。
    • ここでは解説しませんが、端末操作に対する動作を指定する要素もあり、これらは全て<p>要素の前に書き、いわば各カード毎のヘッダに当たる要素と言えます。
    • カードの本体は<p>要素の集まりとなります。

最も簡単なWMLデッキは以下の様な、一枚のカードのみを収めたデッキとなります。

すなわち、以下のようなデッキとなります。

<?xml version="1.0" encoding="文字コード"?>
				<!DOCTYPE wml PUBLIC "-//PHONE.COM//DTD WML 1.1//EN" "http://www.phone.com/dtd/WML 11.dtd">
				<wml>
				    <card title="表題"></card>
				    </wml>

尚、同一ファイル内の連続する二つのカード間の移動には、後述の<a>要素に依るハイパーリンクを用います。通常のカーソル移動で連続するカード間を移動する事は出来ません。

  • 尚、XHTML同様<head>要素もありますが、XHTMLと違って必須要素ではありません。一方、XHTMLで言うところの<body>要素は<card>要素となる訳です。

<p>要素 - 段落。

WMLでの段落はHTML同様<p>要素です。

  • 実際にはWML 1.xでは<p>要素以外のブロックレヴェル要素が無いので(WMLでは見出しを表わす<h○>要素に相当するものはありません)、見出しなども<p>要素としなければなりません。

WMLでの<p>要素は以下のようになります。

<p align="配置" mode="表示モード"></p>
  • align属性はテキストの配置を指定します。値には「left」「right」「center」が使え、それぞれ左寄せ,右寄せ及びセンタリングを表わします。
  • mode属性は表示モードを指定します。値には「wrap」「nowrap」が使え、テキストが画面の右端を越えたときに「wrap」では折返し表示をし、「nowrap」では折返さずにスクロール表示をします。

<a>要素 - ハイパーリンク。

WMLでもハイパーリンクの為の起点アンカーに<a>要素を用います、属性もHTMLでの<a>要素と同じhref属性を用います。

  • WMLでは終点アンカーには<a>要素は使えません。

WMLでの<a>要素は以下のようになります。

<a href="URI" accesskey="アクセスボタン">アンカーとなる文字列</a>

href属性値となるURIとしては、以下のものが使えます。

URL
「http://」スキーム名で始まるURLか相対アドレスが使えます。
メールアドレス
WAP 1.0では、携帯電話に実装されたメールクライアントを起動する方法は確立されていませんでしたが、多くの端末で「mailto:」スキーム名に続けたメールアドレスを利用する事が出来ます。
電話番号
WAP 1.0では、URIにwtai://wp/mc;スキーム名に続けた電話番号を用いる事で、電話を掛ける事が出来るようになっております。
  • 尚、日本ではiモードとの互換性からtel:スキーム名で始まる電話番号も記述出来るようになっておりますが、海外では利用出来なくなります。

<a>要素のaccesskey属性。

accesskey属性はリンクをダイヤルボタンを押すだけで指定出来る機能を提供する、オープンウェーブ社等の独自拡張属性です。電話機のダイヤルボタンのうち、1から9までが指定出来ます(0と「*」「#」は正常に機能しません)。

  • accesskey属性でダイヤルボタンを指定した場合、当該番号がリンクの左に自動的に表示されます。
  • 同一デッキの複数のリンクに同じボタンを指定すると正常に機能しない可能性があります。

カードへのリンク。

デッキ内の特定のカードを撰ぶ場合は、URIの後ろに「#カード名」を続けます。

カード名は<card>要素id属性の値です。

カード名を指定していない場合(URIのみを指定している場合)はURIで指定されたデッキの一番始めのカードを指定したものと見なします。

従って、デッキ内で二番目以降の<card>要素には必ずid属性を与える必要があります。

さもないとそのカードへは一切アクセス出来ない事になるからです。

尚、同一デッキ内の別のカードを指定する場合はURIを省略して「#カード名」だけを指定します。

<img>要素 - 画像の埋め込み。

WMLでも画像の埋め込みには<img>要素を用いる事になっております。属性もHTMLの<img>要素と同じで、src属性でリンクする画像を指定し、alt属性で代替文字列を指定します。

  • その他の属性(width,height及びlongdesc各属性など)も定義されていますが実機では機能しないようです。
  • WMLはXML応用言語の為、HTMLと違って<img>要素にも終了タグが必要です。このため、終了タグを略記する為にタグの末尾に「/」をつけます。

WMLでの<img>要素の書式は以下の通りです。

<img alt="代替文字列" src="画像URI" />

<br>要素 - 改行。

WMLでも改行には<br>要素を用います。

WMLはXML応用言語の為、HTMLと違って<br>要素にも終了タグが必要です。このため、終了タグを略記する為にタグの末尾に「/」をつけます。

すなわち、WMLでは<br>要素は以下のように書きます。

<br />

この他のインライン要素。

この他には、主に以下の要素がありますが、いずれも日本のEZウェブ旧型機では無効となります。

  • <em>要素 - 強調。
  • <strong>要素 - 更なる強調。
  • <big>要素 - 大きな文字。
  • <small>要素 - 小さな文字。
  • <u>要素 - 下線を引く。

WMLに関する注意事項。

  • ファイル拡張子は「.wml」にします。これでオペラによるリンク確認も可能になります。尚、多くのOSはデフォルトでWMLを認識しないので、ウィンドウズなどの場合は予めファイル拡張子とオペラを関連付けておくと良いでしょう。
  • HDML同様、文法違反があるとエラーになりますが、オペラでもページの最下段にエラーメッセージを表示します。
  • ファイル容量制限はテキストだけで白黒専用機では1.4キロ以内(1.2キロ以内が望ましい)、カラー対応機では 8キロ以内(7.5キロ以内が望ましい)とします。尚、この値はテキストの容量ではなく、端末側のサーヴァがテキストを処理したあとのサイズを指します(実際にはソースファイルより必ず小さくなりますので、ソースファイルの容量がこの値に引っ掛からなければ問題無い事になります)。
  • 画像は白黒専用機はBMPファイルで1.4キロ以内(1.2キロ以内が望ましい)、カラー対応機では256色以内のPNGファイルで 8キロ以内(7.5キロ以内が望ましい)となります。
  • カラー対応機でも文字や背景の色を指定する事は出来ません。
  • WMLでは本文中に「<」「>」「&」「$」を記述する事は出来ません。それぞれ実体参照として「&lt;」「&gt;」「&amp;」「$$」で記述します。

WMLに関するこぼれ話。

WML 1.1の仕様について、以下のものがあります。

  • 各要素にはid属性やclass属性が用意されております。但しid属性を終点アンカーとして用いる事は出来ないようです。
  • <link>要素もあります。HTMLなどと同様<head>要素内に入れます。但しrel属性が必須で、rev属性は使えません。

以上を考えると、WMLでも外部スタイル定義ファイルを用いる事で、CSSを利用する事が出来そうです。

しかしながら、WAP 1.0端末では、端末の実装の問題から利用出来ませんでした。

  • WAP 1.0端末では外部スタイル定義ファイルを読み込む<link rel="stylesheet">要素がエラーになります(rel="next"以外のrel属性を持つ<link>要素はは全てエラーとなります)。
  • 一方、WAP 2.0端末では<link rel="stylesheet">要素によるCSSスタイル定義ファイルのリンクはエラーにならず、プロパティ定義も有効でしたが、実際にWMLにCSSを適用させるとなるとはXHTML ベーシック/モバイル・プロファイルとは異なる独自のスタイル定義ファイルが必要になります(要素が異なるため、セレクタが違ってくるからです)。

しらぎくのウェブサイト作成入門サイトマップ