WAP(wml)開發(fā)教程
WAP(無線應用協(xié)議)是數(shù)字移動電話、互聯(lián)網或其他個人數(shù)字助理(PDA) 與計算機應用程序之間通信的開放式全球標準。它由一系列用于標準化無線通信設備的協(xié)議組成,可用于互聯(lián)網訪問,包括收發(fā)電子郵件、訪問WAP網站頁面等。
WAP 將移動網絡與互聯(lián)網和公司局域網緊密聯(lián)系起來。提供獨立于網絡類型、運營商和終端設備的移動增值服務。
通過這項技術,無論何時何地需要信息,您都可以打開WAP手機,享受無窮無盡的在線信息或在線資源。如:綜合新聞、天氣預報、股市動態(tài)、商業(yè)報道、當前匯率等。電子商務、網上銀行也將一一實現(xiàn)。您還可以隨時隨地獲取體育賽事成績、娛樂軼事和幽默故事,為您的生活增添情趣,您還可以使用在線預約功能,讓您的生活有條不紊。
WAP 協(xié)議包括以下幾層:
1. 無線應用環(huán)境(WAE)
2.無線會話層(WSL)
3.無線交易層(WTP)
4. 無線傳輸層安全(WTLS)
5.無線傳輸層(WDP)
其中,WAE層包含微瀏覽器、WML、WMLSCRIPT解釋器等功能。 WTLS層為無線電子商務和無線加密數(shù)據傳輸提供基本的安全功能。
WAP協(xié)議的誕生是WAP論壇成員多年努力的結果。它為不同的協(xié)議層定義了一系列協(xié)議。這些協(xié)議使各種制造商和公司能夠合作開發(fā)無線通信網絡的應用程序。目前,已有100多家成員加入WAP論壇,包括終端和基礎設備制造商、移動通信網絡運營商、服務提供商、軟件公司和網絡內容提供商等,共同開發(fā)移動設備服務和應用.
但是,由于無線網絡帶寬等因素的限制,WAP手機在多媒體方面的應用,如:視頻會議、多媒體教學等,還需要一定的時間。
WAP規(guī)范仍在不斷完善中,WAP論壇成員正在加緊開發(fā)功能完備的WAP設備,這無疑將加快其在無線互聯(lián)網綜合服務領域的擴張速度。
WAP有幾點需要注意:
1. WAP不只是讓手機進入IP/Internet網絡
WAP 規(guī)范考慮了無線網絡和移動電話的許多特性。即使是3G手機也不能像通用電腦一樣讓屏幕瀏覽HTML頁面。直接接入IP網絡,9110在1998年就可以做到,但是諾基亞、摩塔羅拉、愛立信不可能在推出手機的時候就定制一套應用。
像WWW一樣,在規(guī)范發(fā)布之前,已經有很多基于IP網絡的應用,包括一些制作精良的軟件。但在WWW 規(guī)范推出后,互聯(lián)網遍地開花。 WAP的重要意義在于統(tǒng)一的標準。
WAP和無線IP網絡之間并不矛盾。 WAP協(xié)議規(guī)定,如果承載是基于IP的,WDP就是UDP。當無線IP網絡普及后,如果覺得上層太過繁瑣,頂多WAP協(xié)議的中間層會省略掉(其實也沒有多少東西)。
2、WAP應用模式多種多樣
只要手機和網絡支持統(tǒng)一標準,業(yè)務發(fā)展就無可限量。這個我就不多說了。
3、WAP正在發(fā)展
WAP規(guī)范不僅定義了與Internet的結合,還定義了WTE和語音部分??梢哉f發(fā)展還早。如果未來建設通信核心網,語音業(yè)務可能全部使用WAP來實現(xiàn)。
WML學習(一)
概述
WML(Wireless Markup Language——無線標記語言)是一種描述語言,與我們經常聽到的HTML語言同屬XML語言大家族。用HTML語言編寫的內容可以在我們的PC上用IE或Netscape等瀏覽器閱讀,而用WML語言編寫的文件專門用于在手機等一些無線終端屏幕上顯示。它是被人閱讀的,也可以為用戶提供人機交互界面,接受用戶輸入的查詢等信息,然后將他想要獲取的最終信息返回給用戶。
基本規(guī)則
* WML 使用XML 文檔字符集,目前支持Unicode 2.0。與HDML不同的是,WML的所有標簽、屬性和指定的可接受值都必須是小寫的,CARD的名稱和變量也是區(qū)分大小寫的。與在HDML 中一樣,對于連續(xù)的空字符只顯示一個空格。標簽中屬性的值必須用"or'括起來,屬性名、=和值之間不能有空格。對于不成對出現(xiàn)的標簽,必須在"之前加/,如《br/》。關于變量的引用與HDML基本相同,有:
引述如下:
$(var1:esc)
$(var1:noesc)
$(var1:unesc)
三種形式,具體含義見前面HDML的相關部分。保留字符的處理基本相同,對應的替換字符為:
引述如下:
“”
“”
' 載脂蛋白;
“”
$ $$
空間
- -
這里需要指出的是,在傳遞url的過程中,用于連接的參數(shù)必須轉換成amp
; 。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的相關信息?!秇ead》 標簽之間可以包含一個《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數(shù)據
http-equiv=”name“ UP.Link Server將meta 數(shù)據轉為 HTTP 響應頭(同HTML)
user-agent=”agent“ UP.Link Server 直接將 meta 數(shù)據傳給手機設備,content屬性也是必選的,其內容根據屬性而定。scheme屬性目前尚不支持。forua 為可選屬性,指定在該wml文件傳到客戶端之前,《meta》標簽是不是被中間代理刪除(因為傳輸?shù)膮f(xié)議可能改變),默認值為false。
目前支持的meta數(shù)據:
《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》包含?!禼ard》可以包含以下可選的屬性:
《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時,手機是不是要清除以前保留的信息,包括變量,堆棧里的歷史記錄,重新設置手機狀態(tài)等。
*ordered屬性,默認值是true,表明該CARD里的內容是按固定的順序顯示, 還是按用戶的選擇來顯示。這點和HTMl不同,CARD 頁面里的內容可以按一定的順序顯示,默認的是按線性順序顯示,即按代碼的順序, 但是,要注意的是,以下三個標簽必須按以下順序來寫《onevent》《timer》《do》, (這和以后要講的“事件”有關)。這樣做是為了方便填表單,當ordered設置為true時,如果一個表單的內容不能在一屏里顯示完,就分成多屏顯示;當ordered設置為false時, 手機可以顯示一個概要CARD來總結有效的選項,用戶可以從中選取表單選項來填寫。
*onXXX屬性,類似于HTML標簽中的onXXX屬性,用來捕捉事件,當事件被觸發(fā)時執(zhí)行指定的操作(任務),在這里是轉向某個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=”列數(shù)“》、《tr》和《td》來顯示,《table》的title屬性用來給表格取個名字,columns屬性指定表的列數(shù),不能為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 Server上去找。
*可選的align屬性用來表明圖片同當前行文本的對齊方式,默認值為bottom,可選to和middle。
*height、width、vspace、hspace屬性分別指定圖片的長寬和距環(huán)繞文字的間距,目前不是所有的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=”url“ title=”label“》 和 《/a》來包括用來建立連接的文字,必選屬性href指定了要打開的URL,可選的title屬性給該連接取個標記名字,這個名字將作為軟按鈕之一的ACCEPT鍵(詳見以前的HDML入門文章)的標記顯示在屏幕的軟按鈕區(qū),所以通??梢詫傩宰鳛樘崾疚淖质怯?。
然而,以上的連接在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,默認值為false,可選值為true。method和HTML中的表單FORM的method屬性一樣,指定表單是以get的方式還是post的方式遞交,以便cgi處理,默認的值為get,但如果未指定method但《go》《/go》間存在《postfield》,手機自動以post方式傳遞。accept-charset 屬性可覆蓋在HTTP頭里指定的字符集,可以寫多個字符集,如accept-charset=”UTF-8,US-ASCII, ISO-8859-1“。
《postfield name=”name“ value=”value“/》可以看作是HTML表單FORM中的《INPUT TYPE=”HIDDEN“ NAME=”變量名“ VALUE=”值“》,通過它可以向指定的URL傳遞以“變量名/值”形式的數(shù)據。name和value屬性都是必選的。注意只有這里的變量是用來遞交給CGI程序的。
除了《postfield》,還可以在《go》和《/go》間加入一句或者多句《setvar name=”name“ value=”value“/》,該語句的意思是,當觸發(fā)某一事件時,給變量賦值。
要注意的是,當《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“/》《/prev》,《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“ tabindex=”n“/》,用來輸入文本,除了name屬性是必要的,其他可選。
*name屬性,指定了用來存儲該輸入文本的變量名字。
*title屬性,該輸入框的名字,同樣可被用來作為概要CARD頁中的選項名。
*type屬性,默認值為text,如選擇password,則輸入的數(shù)據顯示為*。
*value屬性,在語法和行為上等同于下面的default屬性,*default屬性,指定輸入框的默認值,即name屬性指定變量的默認值,當用戶輸入新值時,該值無效,如果該值不符合以下format屬性的規(guī)定,則手機也忽略該默認值。
*format 屬性,用來格式化輸入的數(shù)據,可用的標記如下,使用時可用“一位數(shù)字標記”和“*標記”的形式,前者代表N個標記型字符,如3X, 后者代表任意個(小于maxlength屬性的值)標記型字符。
標記 描述
A 任何符號或者大寫字母(不包括數(shù)字)
a 任何符號或者小寫字母(不包括數(shù)字)
N 任何數(shù)字(不包括符號或者字母)
X 任何符號、數(shù)字或者大寫字母(不可改變?yōu)樾懽帜福?br>x 任何符號、數(shù)字或者小寫字母(不可改變?yōu)榇髮懽帜福?br>M 任何符號、數(shù)字或者大寫字母(可改變?yōu)樾懽帜福┗蛘叨鄠€字符,默認為首字大寫
m 任何符號、數(shù)字或者小寫字母(可改變?yōu)榇髮懽帜福┗蛘叨鄠€字符,默認為首字小寫
*maxlength屬性,指定了用戶可輸入的最大字符長度,最大限制為256個字符。
*emptyok屬性,表示用戶可否不填輸入框,默認為false,即要填。
*size屬性,輸入框顯示長度,目前未被支持。
*tabindex屬性,類似于在HTML表單中按TAB鍵后,焦點落在哪個選項上,該值決定了這個選擇順序,數(shù)字大的排在后面。目前未被支持。
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=”YourNameHere“ 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=”YourCommentsHere“ format=”*M“ emptyok=”true“ maxlength=”30“ tabindex=”3“/》
《/p》
《/card》
《/wml》
將上例《card》中的odered的值改為”true“試試看,然后再在《p》和《/p》內加入《fieldset title=”field1“》和《/fieldset》試試看。
《select》選單類似于HTML表單中的《SELECT》,《select》和《/select》間可包含《optgroup》和《option》標簽,語法如下,所有屬性都為可選:
《select title=”label“ multiple=”false|true“ name=”variable“ default=”default“ 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》間還可包括《optgroup》和《option》,該標簽目前尚未被支持。
《option》,類似于HTML中選單的《OPTION》,用來表示選單的可選項。《option》和《/option》間可包括事件(見下節(jié))和選單的顯示文本?!秓ption》 的屬性為可選,其中value屬性用來提供值,當選到該項后,將該值賦給《select》 的name屬性所指定的變量。onpick屬性,用來指定用戶選到該項并按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=”false|true“》任務《/do》,任務就是以前提到的四種任務?!禿o》的屬性中,type是必選的,其他為可選。
*label屬性,指定了軟按鈕在屏幕上的顯示文本。目前type屬性為delete,help,prev時該屬性無效。
*name屬性,為《do》取個名字,同一的CARD里的《do》不能重名。如果CARD級的《do》和DECK級的《do》同名,則覆蓋DECK級的《do》。
*optional屬性,指定手機是不是可以忽略這個事件,默認值是false。
*type屬性,指定觸發(fā)的事件,具體如下;
type值 觸發(fā)原因
accept 調用ACCEPT按鈕機制
delete 調用DELETE按鈕機制
help 調用HELP按鈕機制
options 調用選擇按鈕機制
prev 調用PREV按鈕機制
reset 調用清除和重新設定手機狀態(tài)時的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值 如果用戶執(zhí)行了以下操作就執(zhí)行任務
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》
You are Living in $(city:noesc)
《/p》
《/card》
《/wml》
《timer/》可以用來在用戶不進行任何操作的一段時間后,自動執(zhí)行一個任務,任何激活CARD頁面的任務和用戶操作都會啟動《timer/》,而任務進行時,《timer/》就停止。
每個CARD只能有一個《timer/》,一個《timer/》只能觸發(fā)一個任務。語法如下:《timer name=”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為text/vnd.wap.wml,然后在HKEY_LOCAL_MACHINESoftwareCLASSESMIMEDatabaseContent 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“ emptyok=”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》
WAP網站服務器配置
設置APACHE WEB SERVER
不管是NT 還是UNIX 或LINUX ,都是修改 Apache 安裝目錄下的conf/mime.types文件在該文件中增加以下內容:
text/vnd.wap.wml .wml
image/vnd.wap.wbmp .wbmp
application/vnd.wap.wmlc .wmlc
text/vnd.wap.wmls .wmls
application/vnd.wap.wmlsc .wmlsc
存盤
重新啟動APACHE WEB SERVER 即可。
基于WINDOW NT平臺的IIS設置WAP SERVER
只要按照以下的簡單設置,就可以讓NT IIS成為WAP服務器,您可以撰寫WML網頁或者開發(fā)各種服務。
設定方式:(先確定NT Server已經安裝IIS了服務)
執(zhí)行NT操作系統(tǒng)下的【開始】/【程序】/【Windows NT Option Pack】/【IIS 4.0】/I
nternet服務管理員。
在IIS服務管理員窗口內,點選主機電腦名稱后,按鼠標右鍵,點選“屬性”選項;
在屬性窗后下部有一個文件類型按鈕,單擊此按鈕,會出現(xiàn)文件類型界面;
單擊‘新增類型’按鈕,然后在相關的擴展名欄中填寫 .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 image/vnd.wap.wbmp
本文發(fā)布于北京網站建設公司推來客http://www.tlkjt.com/
我們專注高端建站,小程序開發(fā)、軟件系統(tǒng)定制開發(fā)、BUG修復、物聯(lián)網開發(fā)、各類API接口對接開發(fā)等。十余年開發(fā)經驗,每一個項目承諾做到滿意為止,多一次對比,一定讓您多一份收獲!