WAP(無線應用協議)是在數字移動電話、因特網或其餘我的數字助理機(PDA)、計算機應用之間進行通信的開放全球標準。 它是由一系列協議組成,用來標準化無線通訊設備,可用於Internet訪問,包括收發電子郵件,訪問WAP網站上的頁面等等。
WAP將移動網絡和Internet以及公司的局域網緊密地聯繫起來.提供一種與網絡類型、運行商和終端設備都獨立的移動增值業務。
經過這種技術,不管你在何地、什麼時候只要你須要信息,你就能夠打開你的WAP手機,享受無窮無盡的網上信息或者網上資源。如:綜合新聞、天氣預報、股市動態、商業報道、當前匯率等。電子商務、網上銀行也將逐一實現。你還能夠隨時隨地得到體育比賽結果、娛樂圈趣聞以及幽默故事,爲生活增添情趣,也能夠利用網上預約功能,把生活安排的有條不紊。
WAP協議包括如下幾層:
一、Wireless Application Environment (WAE)
二、Wireless Session Layer (WSL)
三、Wireless Transaction Layer (WTP)
四、Wireless Transport Layer Security (WTLS)
五、Wireless Transport Layer (WDP)
其中,WAE層含有微型瀏覽器、WML 、WMLSCRIPT的解釋器等等功能。WTLS層爲無線電子商務及無線加密傳輸數據時提供安全方面的基本功能。
WAP協議的誕生是WAP論壇成員多年努力的結果。它是針對不一樣的協議層定義了一系列協議,這些協議使得各方面的廠商和公司能夠協同工做,開發無線通訊網絡的應用。目前有超過100個成員加入WAP論壇,包括有終端和基礎設備的製造商,有移動通訊的網絡運營商,有業務提供商,有軟件公司,也有網絡內容提供商等,共同爲移動設備開發服務和應用。
可是,目前因爲無線網的帶寬等等因素的限制,WAP手機的在多媒體上的應用如:可視會議、多媒體教學等等,還須一段時日。
WAP規範還在不斷地完善,WAP論壇成員們在加緊開發功能完善的WAP設備,這無疑加快其在無線因特網綜合服務領域的擴展速度。
關於WAP有幾點,應該注意一下:
1)WAP不僅是將手機帶入IP/Internet網絡
WAP規範考慮了不少無線網絡和手機的特性。即使是3G的手機也沒法把屏幕作的象通用計算機同樣,來瀏覽HTML頁面。直接接入IP網,9110在98年就能夠,可是應用呢,不可能Nokia, Motarola, Ericsson推出手機時各自定義一套應用。
象WWW同樣,在規範推出之前,已經有了不少基於IP網絡的應用,包括一些作的很好的軟件。但Internet遍地開花倒是在WWW規範推出以後。WAP很大的意義在於統一的標準。
WAP和無線IP網絡並不矛盾,WAP協議規定,若承載基於IP,WDP就是UDP。等無線IP網絡普及,若認爲上面幾層太繁瑣,最可能是WAP協議中間幾層略掉(其實也沒太多東西)。
2) WAP應用模式不少
只要手機和網絡支持統一標準,業務發展是不可限量的。這一點就很少說了。
3) WAP是發展的
WAP規範不只定義了和Internet結合部分,還定義WTE,及話音部分,能夠說發展還早呢。要是之後通信核心網建起來,話音業務沒準都採用WAP來實現。
WML學習(一)
概述
WML(Wireless Markup Language - 無線標記語言)這種描述語言同咱們常據說的HTML語言同出一家,都屬於X ML語言這一你們族。HTML語言寫出的內容,咱們能夠在咱們的PC機上用IE或是Netscape等瀏覽器進行閱讀,而 WML語言寫出的文件則是專門用來在手機等的一些無線終端顯示屏上顯示,供人們閱讀的,而且一樣也能夠向使用者提供人機交互界面,接受使用者輸入的查詢等信息,而後向使用者返回他所想要得到的最終信息。
基本規則
WML使用XML文檔字符集,目前支持 Unicode 2.0,和HDML不一樣, WML的全部標籤,屬性和規定的可接收值必須小寫,CARD的名字和變量也是區分大小寫的。和HDML同樣,對於連續的空字符,只顯示一個空格。標籤內屬性的值必須用"或者'括起來,屬性名,=和值之間不能有空格。對於不成對出現的標籤,必須在 > 前加 / ,好比<br/>。在對變量的引用上和HDML基本相同,有:
$(var1:esc)
$(var1:noesc)
$(var1:unesc)
三種形式,具體含義參見前面HDML的相關部分。在對保留字符的處理上也基本相同,對應的取代字符有:
< <
> >
' '
" "
& &
$ $$
空格
- -
這裏要指出的是在URL的傳遞過程當中,用來鏈接參數的 & 必須轉化爲 & 。
WML學習(二)
基本格式和文件頭
wml文件的通常格式:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head>
<access/>
<meta..../>
</head>
<card>
Some contents...
</card>
<wml>
結構看上去和HTMl文件很相似,對於每個DECK,在其文檔開頭必須指明如下的類型聲明:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD
WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
千萬注意字母的大小寫。對於一個DECK,其文件大小最好不要超過1.2K。
<wml>標籤和HTML中的<html>標籤同樣,用來代表這是一個 WML的DECK,它有一個可選的xml:lang屬性來制定文檔的語言,好比<wml xml:lang="zh">表示文檔語言爲中文。 和HTML同樣<head>標籤包含了該DESK的相關信息。<head> 標籤之間能夠包含一個<access>標籤和多個<meta>標籤。 <access domain="域" path="/路徑" />至關於HTML中的<BASE>標籤,指定該DECK的訪問控制信息,它用兩個可選的屬性,domain用來指定域,默認值爲當前域, path用來指定路徑,默認值爲"/",即根目錄。因爲 <access>單獨使用,因此要用/結尾,之後對於相似的狀況再也不贅述。
<meta 屬性 content="值" scheme="格式" forua="true|false"/> 和HTML中的相似,提供了該DECK的meta信息。屬性是必選的,包括一下三種狀況name="name" UP.Link Server忽略meta數據
http-equiv="name" UP.Link Server將meta 數據轉爲 HTTP 響應頭(同HTML)
user-agent="agent" UP.Link Server 直接將 meta 數據傳給手機設備,content屬性也是必選的,其內容根據屬性而定。scheme屬性目前尚不支持。forua 爲可選屬性,指定在該wml文件傳到客戶端以前,<meta>標籤是否是被中間代理刪除(由於傳輸的協議可能改變),默認值爲false。
目前支持的meta數據:
<meta http-equiv="Cache-Control" content="max-age=3600"/>指定DECK在手機內存緩存中的存儲時間段,默認的爲30天(除非內存耗盡),在該期間, 手機對於訪問過的DECK直接從緩存裏調用。若是信息是對時間敏感的,能夠用max-age指定DECK在緩存裏的生存期,最小單位是秒, 若是指定爲0, 則每次都需經過鏈接服務器來調用該DECK。
<meta user-agent="vnd.up.markable" content="false"/>
和<meta user-agent="vnd.up.bookmark" content="指定的URL"/> 相似於普通瀏覽器的書籤功能。當用戶將一個CARD作了書籤後,手機瀏覽器首先用一個標記記錄該CARD, 這個標記默認的是<card>標籤中的title屬性(之後會講到),而後當用戶選擇了該書籤之後,瀏覽器就會打開被記錄的URL。可是由於在默認的狀況下,手機會記錄全部的DECK,因此,通常<meta>被用來使手機不要記錄當前的URL,即<meta user-agent="vnd.up.markable" content="false"/>。此外, 若是要爲書籤指定不一樣於當前DRECk的 URL,用<meta user-agent="vnd.up.bookmark" content="指定的URL"/>。
一個DECK能夠包含多個CARD,每一個CARD的內容可能不止一屏顯示,注意DECK,CARD和屏幕顯示範圍的關係。一個CARD用<card>和</card>包含。<card>能夠包含如下可選的屬性:
<card id="name" title="label" newcontext="false" ordered="true" onenterforward="url" onenterbackward="url" ontimer="url">
*id屬性用來指定CARD的名字,可用來在CARD間跳轉,至關於在HTML中在頁內跳轉時用<A NAME="jumpHere">。
*title屬性用來做爲書籤的標記,該屬性通常不會顯示在屏幕上。
*newcontext屬性,默認值爲false, 用來指示當跳轉到本CARD時,手機是否是要清除之前保留的信息,包括變量,堆棧裏的歷史記錄,從新設置手機狀態等。
*ordered屬性,默認值是true,代表該CARD裏的內容是按固定的順序顯示, 仍是按用戶的選擇來顯示。這點和HTMl不一樣,CARD 頁面裏的內容能夠按必定的順序顯示,默認的是按線性順序顯示,即按代碼的順序, 可是,要注意的是,如下三個標籤必須按如下順序來寫<onevent><timer><do>, (這和之後要講的「事件」有關)。這樣作是爲了方便填表單,當ordered設置爲true時,若是一個表單的內容不能在一屏裏顯示完,就分紅多屏顯示;當ordered設置爲false時, 手機能夠顯示一個概要CARD來總結有效的選項,用戶能夠從中選取表單選項來填寫。
*onXXX屬性,相似於HTML標籤中的onXXX屬性,用來捕捉事件,當事件被觸發時執行指定的操做(任務),在這裏是轉向某個URL。
WML學習(三)
顯示文本
在文本的顯示上WML基本和HTML相同。文字段落包含在<p align= "alignment" mode=" wrapmode">和</p>之間,align屬性指定該段文字的對齊方式,默認的是left,其餘可選擇right和center;mode屬性指定當一行顯示不下全部的文字時是否自動換行,默認的是自動換行wrap,若是選nowrap,則在一行中顯示,瀏覽器會經過相似於水平滾動條的機制來顯示全部文字。
換行標籤也同樣爲<br/>,這裏先替一下,在標單中若是有多個<input>或者<select>,其間不要用<br/>,不然會使手機瀏覽器認爲是斷點而把表單分頁顯示。
文字的修飾標籤有<b>、<i>、<u>、<em>、<strong>、<big>和<small>,意義和HTML裏的相同。
表格的顯示標籤也和HTML相近,使用<table title="name" align="left|right|center" columns="列數">、<tr>和<td>來顯示,<table>的title屬性用來給表格取個名字,columns屬性指定表的列數,不能爲0,可選的align屬性和前面提到的同樣是對齊方式。表格中能夠包含文字和圖片。
test1.wml
--------------
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD
WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card>
<p align="center">
<i>Hello</i><br/>
<b><i>World!</i></b>
<table title="mytable" align="right" columns="2">
<tr>
<td>1-1</td>
<td>1-2</td>
</tr>
<tr>
<td>2-1</td>
<td>2-2</td>
</tr>
</table>
</p>
</card>
</wml>
顯示圖片
顯示圖片(1位黑白BMP圖片)的標籤同樣相似於HTML,<img alt="text" src="url"
localsrc="icon" align="left" height="n" width="n" vspace="n" hspace="n"/>,屬
性中alt和src是必需要有的,其餘可選。另外要注意的是<img>要放在<p>裏,不能放在
<do>和<option>等功能健標籤和選單標籤裏。
*alt屬性用來指定當手機不支持圖片顯示時用來顯示的文字。
*src屬性指定圖片的URL,但當有了如下的localsrc屬性時,手機瀏覽器就忽略src
屬性。
*localsrc屬性用來指定顯示存在手機ROM中的圖標,若是找不到,則到UP.Link Se
rver上去找。
*可選的align屬性用來代表圖片同當前行文本的對齊方式,默認值爲bottom,可選
to和middle。
*height、width、vspace、hspace屬性分別指定圖片的長寬和距環繞文字的間距,
目前不是全部的WAP手機都支持這些屬性。
test2.wml
---------------
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org
/DTD/wml_1.1.xml">
<wml>
<card>
<p align="center"><img alt=":)" src="xxx.bmp" localsrc="smileyface"/></p>
</card>
</wml>
WML學習(四)
錨和任務
鏈接是 HTML 頁面裏最基本的功能, 在 WML 裏也同樣用 <a href="ur
l" title="label"> 和 </a>來包括用來創建鏈接的文字,必選屬性href指定了要打開的
URL,可選的title屬性給該鏈接取個標記名字,這個名字將做爲軟按鈕之一的ACCEPT鍵
(詳見之前的HDML入門文章)的標記顯示在屏幕的軟按鈕區,因此一般能夠將屬性做爲提
示文字是用。
然而,以上的鏈接在WML裏只是任務的一種狀況,爲了可以使用其它任務,因此引進
了新的標籤<anchor title="label">任務標籤 文本</anchor>,<a>實際上是當任務標籤爲
<go/>時的簡單表示方式。
test3.wml
---------------
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org
/DTD/wml_1.1.xml">
<wml>
<card>
<p>
<anchor title="Link1"><go href="test1.wml"/>News</anchor><br/>
<a title="Link2" href="test2.wml">Sports</a>
</p>
</card>
</wml>
WML裏的任務標籤有如下幾種,除了用於<anchor>,還能夠用在事件中:
1)<go>用來指示瀏覽器顯示指定的URL,包括DECK的第一個CARD或者指定的CARD。語
法以下:
<go href="url" sendreferer="false|true" method="get|post" accept-charset
="charset">
<postfield name="name" value="value"/>
<setvar name="name" value="value"/>
</go>
其中href屬性爲必選,其餘爲可選。sendreferer屬性表示是否傳遞調用href所指定
的URL的頁面的URL,也就是當前頁的URL,即 HTTP 頭中的HTTP_REFERER,默認值爲fal
se,可選值爲true。method和HTML中的表單FORM的method屬性同樣,指定表單是以get的
方式仍是post的方式遞交,以便cgi處理,默認的值爲get,但若是未指定method但<go>
</go>間存在<postfield>,手機自動以post方式傳遞。accept-charset 屬性可覆蓋在H
TTP頭裏指定的字符集,能夠寫多個字符集,如accept-charset="UTF-8,US-ASCII, ISO
-8859-1"。
<postfield name="name" value="value"/>能夠看做是HTML表單FORM中的<INPUT T
YPE="HIDDEN" NAME="變量名" VALUE="值">,經過它能夠向指定的URL傳遞以「變量名/
值」形式的數據。name和value屬性都是必選的。注意只有這裏的變量是用來遞交給CGI
程序的。
除了<postfield>,還能夠在<go>和</go>間加入一句或者多句<setvar name="name
" value="value"/>,該語句的意思是,當觸發某一事件時,給變量賦值。
要注意的是,當<go>和</go>之間沒有任何語句時,要用<go/>的形式,這點比較特
別,好比<anchor title="Link1"><go href="test.wml"/>News</anchor>。
2)<prev>用來將當前頁面的URL壓入URL歷史堆棧,並打開此前的URL,若該URL不存
在,則<prev>無效。語法相似<go>:<prev><setvar name="name" value="value"/></p
rev>,<prev>和</prev>之間可加入一句或多句<setvar name="name" value="value"/>
,若不加,則必須變成<prev/>的形式。
3)<refresh>用來刷新當前的頁面,從而使得頁面內的變量刷新,語法爲<refresh>
<setvar name="name" value="value"/></refresh>。
4)<noop>,表示什麼也不作,該標籤不能用在<anchor>中,通常用在覆蓋DECK級的
<do>(之後會說明)。
WML學習(五)
顯示錶單
相似於HTML的<FORM>,<fieldset>可用來包括一組表單選項,但不是必須的。前面
說過,當<card>的ordered設置爲false時,手機能夠顯示一個概要CARD來總結有效的選
項,方便用戶從中選取表單選項來填寫,概要CARD就是根據<fieldset>和獨立的輸入框
<input>以及選單<select>來總結的。語法爲, <fieldset title="label">表單內容</
fieldset>,可選的title屬性除了可用來表示表單的名字外,還在概要CARD裏做爲選擇項的標題。表單內容能夠是嵌套的<fieldset>,輸入框<input>,選單<select>和必要的
提示文本。
<input name="variable" title="label" type="type" value="value" default="
default" format="specifier" emptyok="false|true" size="n" maxlength="n" tabi
ndex="n"/>,用來輸入文本,除了name屬性是必要的,其餘可選。
*name屬性,指定了用來存儲該輸入文本的變量名字。
*title屬性,該輸入框的名字,一樣可被用來做爲概要CARD頁中的選項名。
*type屬性,默認值爲text,如選擇password,則輸入的數據顯示爲*。
*value屬性,在語法和行爲上等同於下面的default屬性,
*default屬性,指定輸入框的默認值,即name屬性指定變量的默認值,當用戶輸入
新值時,該值無效,若是該值不符合如下format屬性的規定,則手機也忽略該默認值。
*format 屬性,用來格式化輸入的數據,可用的標記以下,使用時可用「一位數字
標記」和「*標記」的形式,前者表明N個標記型字符,如3X, 後者表明任意個(小於ma
xlength屬性的值)標記型字符。
標記 描述
A 任何符號或者大寫字母(不包括數字)
a 任何符號或者小寫字母(不包括數字)
N 任何數字(不包括符號或者字母)
X 任何符號、數字或者大寫字母(不可改變爲小寫字母)
x 任何符號、數字或者小寫字母(不可改變爲大寫字母)
M 任何符號、數字或者大寫字母(可改變爲小寫字母)或者多個字符,默認
爲首字大寫
m 任何符號、數字或者小寫字母(可改變爲大寫字母)或者多個字符,默認
爲首字小寫
*maxlength屬性,指定了用戶可輸入的最大字符長度,最大限制爲256個字符。
*emptyok屬性,表示用戶能否不填輸入框,默認爲false,即要填。
*size屬性,輸入框顯示長度,目前未被支持。
*tabindex屬性,相似於在HTML表單中按TAB鍵後,焦點落在哪一個選項上,該值決定
了這個選擇順序,數字大的排在後面。目前未被支持。
test4.wml
---------------
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org
/DTD/wml_1.1.xml">
<wml>
<card id="card1" ordered="false">
<p>
USERNAME:<input name="userName" title="User Name" type="text" value="YourNam
eHere" format="*M" emptyok="false" maxlength="12" tabindex="1"/>
PASSWORD:<input name="password" title="Password" type="password" format="8x"
emptyok="false" maxlength="8" tabindex="2"/>
COMMENTS:<input name="comments" title="comment" type="text" value="YourComme
ntsHere" format="*M" emptyok="true" maxlength="30" tabindex="3"/>
</p>
</card>
</wml>
將上例<card>中的odered的值改成"true"試試看,而後再在<p>和</p>內加入<fiel
dset title="field1">和</fieldset>試試看。
<select>選單相似於HTML表單中的<SELECT>,<select>和</select>間可包含<optg
roup>和<option>標籤,語法以下,全部屬性都爲可選:
<select title="label" multiple="false|true" name="variable" default="def
ault" iname="index_var" ivalue="default" tabindex=" n">
<optgroup title="label">選單內容</optgroup>
<option title="label" value="value" onpick="url">
事件或者文本
</option>
</select>
*title屬性,如以上<input>的title屬性。
*multiple屬性,指定用戶能否進行多項選擇,默認值爲false。
*name屬性,用來存儲用戶選擇項的變量名,其值爲 <option>標籤的value屬性,若
用戶沒有選擇又沒有用 default 屬性指定默認值, 則手機將改變量賦值爲空字符串"",對於多項選擇,每一個值用「;」分開。
*default屬性,可爲name屬性指定的變量賦默認值。
*iname屬性,用來記錄用戶選擇項的位置,相應的值從 1 開始。 若沒選,則該值
爲0。
*ivalue屬性,用來記錄默認值所在的位置。
<optgroup>可用來將多個<option>分組,<optgroup>和</optgroup>間還可包括<op
tgroup>和<option>,該標籤目前還沒有被支持。
<option>,相似於HTML中選單的<OPTION>,用來表示選單的可選項。<option>和</
option>間可包括事件(見下節)和選單的顯示文本。<option> 的屬性爲可選,其中valu
e屬性用來提供值,當選到該項後,將該值賦給<select> 的name屬性所指定的變量。on
pick屬性,用來指定用戶選到該項並按ACCEPT鍵後所打開頁面的URL。
test5.wml
---------------
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org
/DTD/wml_1.1.xml">
<wml>
<card id="card0" ordered="false">
<p>
Please select a city...
<select title="Cities List" name="city">
<option title="Beijing" value="c1">Beijing</option>
<option title="Shanghai" value="c2">Shanghai</option>
<option title="Hongkong" value="c3">Hongkong</option>
</select>
Please select columns...
<select title="Column List" multiple="true" name="col">
<option title="Hot News" value="l1">News</option>
<option title="Cool Sports" value="l2">Sports</option>
<option title="Pop Enter,,," value="l3">Entertainment</option>
</select>
</p>
</card>
</wml>
WML學習(六)
事件
WML的事件基本上分爲兩大類,一類是鍵盤(包括軟硬按鈕)輸入事件,用<do>標籤來
處理,另外一類是相關頁面內部的事件,用<onevent>標籤來處理。
<do>的語法以下:<do type="type" label="label" name="name" optional="fals
e|true">任務</do>,任務就是之前提到的四種任務。<do>的屬性中,type是必選的,其
他爲可選。
*label屬性,指定了軟按鈕在屏幕上的顯示文本。目前type屬性爲delete,help,
prev時該屬性無效。
*name屬性,爲<do>取個名字,同一的CARD裏的<do>不能重名。若是CARD級的<do>和
DECK級的<do>同名,則覆蓋DECK級的<do>。
*optional屬性,指定手機是否是能夠忽略這個事件,默認值是false。
*type屬性,指定觸發的事件,具體以下;
type值 觸發緣由
accept 調用ACCEPT按鈕機制
delete 調用DELETE按鈕機制
help 調用HELP按鈕機制
options 調用選擇按鈕機制
prev 調用PREV按鈕機制
reset 調用清除和從新設定手機狀態時的RESET機制(目前不支持)
unknown 調用unknown機制,等於type=""(目前不支持)
vnd. co-type 調用廠商特定的機制(目前不支持)
X-*, x-* 供之後使用(不保留)(目前不支持)
test6.wml
---------------
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org
/DTD/wml_1.1.xml">
<wml>
<head>
<meta http-equiv="Cache-Control" content="max-age=0"/>
</head>
<card id="card0" ordered="false">
<do type="accept" label="InputName" name="do1">
<go href="#card01"/>
</do>
<p>
NAME:<input name="userName" title="User Name" type="text" format="*M" emptyo
k="false" maxlength="12"/>
</p>
</card>
<card id="card01">
<p>
You name is $(userName:noesc).
</p>
</card>
</wml>
<onevent>的語法以下,<onevent type="type">任務</onevent>,必選屬性type的
取值以下:
type值 若是用戶執行了如下操做就執行任務
onpick 用戶選擇或不選一個<option>項時。
onenterforward 用戶使用<go>任務到達一個CARD時。
onenterbackward 用戶使用<prev>任務返回到前面的CARD時,或者按BACK按鈕時。
ontimer 當<timer>過時時。
test7.wml
---------------
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org
/DTD/wml_1.1.xml">
<wml>
<head>
<meta http-equiv="Cache-Control" content="max-age=0"/>
</head>
<card id="card0" ordered="false">
<p>
Please select a city...
<select title="Cities List" name="city">
<option title="Beijing" value="Beijing">
<onevent type="onpick">
<go href="#card01"/>
</onevent>Beijing</option>
<option title="Shanghai" value="Shanghai" onpick="#card01">Shanghai</option>
<option title="Hongkong" value="Hongkong" onpick="#card01">Hongkong</option>
</select>
</p>
</card>
<card id="card01">
<p>
Yore Living in $(city:noesc)
</p>
</card>
</wml>
<timer/>能夠用來在用戶不進行任何操做的一段時間後,自動執行一個任務,任何
激活CARD頁面的任務和用戶操做都會啓動<timer/>,而任務進行時,<timer/>就中止。
每一個CARD只能有一個<timer/>,一個<timer/>只能觸發一個任務。語法以下:<timer n
ame="variable" value="value"/>,其中name爲可選屬性,指定爲一個變量名,當退出該CARD時,該變量存儲此時定時器的值,當定時器超時時,手機將該變量設爲0;value爲必選屬性,用來設置定時器的定時值,最小單位爲0.1秒。
test8.wml
---------------
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org
/DTD/wml_1.1.xml">
<wml>
<head>
<meta http-equiv="Cache-Control" content="max-age=0"/>
</head>
<card id="card1" ontimer="#card2">
<timer name="time1" value="50"/>
<p align="center">
After 5s, goto card2
</p>
</card>
<card id="card2">
<onevent type="ontimer">
<go href="#card1"/>
</onevent>
<timer name="time2" value="50"/>
<p align="center">
Here is card2!
</p>
</card>
</wml>
再提一下,<onevent> <timer> <do>三者必須按以上順序寫。
此外在DECK級還能夠加入<template>,用來將事件捆綁在DECK級上,語法以下:
<template onenterforward="url" onenterbackward="url" ontimer="url">
<do>或者<onevent>
</template>
test9.wml
---------------
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org
/DTD/wml_1.1.xml">
<wml>
<head>
<meta http-equiv="Cache-Control" content="max-age=0"/>
</head>
<template>
<do type="accept" label="deckPress" name="do1">
<go href="#card01"/>
</do>
</template>
<card id="card0" ordered="false">
<do type="accept" label="cardPress" name="do1">
<go href="#card02"/>
</do>
<p>
Press ACCEPT...
</p>
</card>
<card id="card01">
<p>
Here is card01
</p>
</card>
<card id="card02">
<p>
Here is card02
</p>
</card>
</wml>
WML學習(七)
CGI編程
1)在WEB服務器上添加WML的MIME類型 對於IIS4,可在其管理器裏的站點屬性中加入新的MIME類型,後綴.wml和 MIME類 型text/vnd.wap.wml。 對於PWS,可修改註冊表,先在 HKEY_CLASSES_ROOT層加入主鍵.wml,再加入串值Content Type爲ext/vnd.wap.wml,
而後在HKEY_LOCAL_MACHINE\Software\CLASSES\MIME\Database\Content Type\中加入主鍵text/vnd.wap.wml,再加入串值Extension爲.wml。之前提到的HDML也用相似的方法。
2)以http方式訪問wml文件 在手機瀏覽器的URL欄裏輸入http://localhost/test.wml,就能夠訪問WML文件了。
3)CGI設計和普通CGI變成的方式差很少,只是返回結果時,先要輸出Content-Type爲text/
vnd.wap.wml,而後再輸出WML內容。
test10.wml
---------------
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org
/DTD/wml_1.1.xml">
<wml>
<head>
<meta http-equiv="Cache-Control" content="max-age=0"/>
</head>
<card id="card0">
<do type="accept" label="Input Name" name="do1">
<go href="http://localhost/test.asp" method="post">
<postfield name="uid" value="123456"/>
<postfield name="uname" value="$(userName:esc)"/>
</go>
</do>
<p>
NAME:<input name="userName" title="User Name" type="text" format="*M" emptyo
k="false" maxlength="12"/>
</p>
</card>
test10.asp
--------------------
<%
uid=Request.Form("uid")
userName=Request.Form("uname")
Response.ContentType="text/vnd.wap.wml"
%>
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org
/DTD/wml_1.1.xml">
<wml>
<card>
<p>
USERNAME:<%=userName%>
USER__ID:<%=uid%>
</p>
</card>
</wml>
WML學習(八)
WAP網站服務器配置
1)設置APACHE WEB SERVER
無論是NT 仍是UNIX 或LINUX ,都是修改 Apache 安裝目錄下的conf/mime.types文件
在該文件中增長如下內容:
text/vnd.wap.wml .wml
p_w_picpath/vnd.wap.wbmp .wbmp
application/vnd.wap.wmlc .wmlc
text/vnd.wap.wmls .wmls
application/vnd.wap.wmlsc .wmlsc
存盤
從新啓動APACHE WEB SERVER 便可。
2) 基於WINDOW NT平臺的IIS設置WAP SERVER
只要按照如下的簡單設置,就可讓NT IIS成爲WAP服務器,您能夠撰寫WML網頁或者開發各類服務。
設定方式:(先肯定NT Server已經安裝IIS了服務)
執行NT操做系統下的【開始】/【程序】/【Windows NT Option Pack】/【IIS 4.0】/Internet服務管理員。在IIS服務管理員窗口內,點選主機電腦名稱後,按鼠標右鍵,點選「屬性」選項;在屬性窗後下部有一個文件類型按鈕,單擊此按鈕,會出現文件類型界面;單擊‘新增類型’按鈕,而後在相關的擴展名欄中填寫 .wml ,在內容類型(MIME)欄中填寫 text/vnd.wap.wml 單擊‘肯定’按鈕
重複以上步驟將如下WML類型新增至MIME內:
相關的擴展名 內容類型(MIME)
.wml text/vnd.wap.wml
.wmlc application/vnd.wap.wmlc
.wmls text/vnd.wap.wmlscript
.wmlsc application/vnd.wap.wmlscriptc
.wbmp p_w_picpath/vnd.wap.wbmp
css