WML編程--詳細教程

發布時間:2007年02月07日      浏覽次數:5058 次
WML編程
(Penny 2001年05月25日 16:17)
元素和标簽是WML的主要語法,它們決定了WML編程的基本原則。本章我(wǒ)(wǒ)們将從WML的元素、标簽、屬性等方面詳細講解WML的編程方法。學習本章知(zhī)識之前,讀者應當了解WML元素與标簽的區别。WML的元素通常有一(yī)個首标簽、内容、其它元素及一(yī)個尾标簽組成。也就說,單獨的标簽是一(yī)個元素,成對出現的标簽與其包含的内容也構成一(yī)個元素。由于元素牽涉及标簽,标簽又(yòu)涉及屬性。
3.1 卡片、卡片組及其屬性
我(wǒ)(wǒ)們前面介紹了WML的卡片與卡片組,主要從概念和相互關系的角度進行了分(fēn)析。我(wǒ)(wǒ)們這裏則從卡片、卡片組的組成、相關元素、标簽技術性等編程角度進行分(fēn)析和講解。 3.1.1 共有屬性
WML元素的共有屬性主要有3個:id、class和xml:lang屬性。
WML的所有元素都有兩個核心屬性,即标示(id)和類(class)屬性。它們主要用于服務器方的信息傳輸。其中(zhōng),id屬性用于定義元素在卡片組中(zhōng)的唯一(yī)标示,即它的名稱;class屬性用于給當前元素定義一(yī)個或更多的類(class)。與卡片組一(yī)樣,類(class)也是有名字的,而且多個元素可以使用一(yī)個類(class)名。具有相同類名的單一(yī)卡片組中(zhōng)的所有元素均可被看作相同類的一(yī)個部分(fēn)。類名是區分(fēn)大(dà)小(xiǎo)寫的。如果在class屬性列表中(zhōng),一(yī)個元素多個唯一(yī)的類名,那麽該元素可以看作這些類中(zhōng)的一(yī)部分(fēn)。具有同一(yī)屬性的多個類名必須用兩個以上的空格間隔,WML程序執行時将忽視其中(zhōng)多餘的類名及其屬性。
另外(wài),在WML程序,所有包含文本的元素均具有“xml:lang”屬性。該屬性用于指定當前元素及其屬性所用的描述語言,如英國英語、美國英語、法語、德語等,并可以爲用戶浏覽器選擇顯示文本的語言提供依據。
3.1.2 WML程序的文件頭
合法的WML卡片組均屬合法的WML文件,因此它必須包含WML的聲明及文件類型的聲明。典型的WML程序的文件頭包括我(wǒ)(wǒ)們前面多次提到的以下(xià)兩行程序:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//wapforun//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
編寫WML程序時,我(wǒ)(wǒ)們必須寫入這兩行程序,并放(fàng)在程序的開(kāi)始處。其中(zhōng)"-//wapforun//DTD WML 1.1//EN"是标準通用标記語言SGML的公共标示;"http://www.wapforum.org/DTD/wml_1.1.xml"是WML程序文檔類型的标示。文檔類型标示也可以是"text/vnd.wap.wml"或“application/vnd.wap.wmlc”,其中(zhōng)前者制定WML的原文類型,後者制定WML程序編譯後代碼類型。
3.1.3 WML元素
WML的WML元素用于定義一(yī)個卡片組,并通過<wml>與</wml>标簽包含和封裝該卡片組中(zhōng)的所有卡片及信息。它的語法格式如下(xià):
<wml xml:lang="lang">
内容(content)
</wml>
其中(zhōng)xml:lang="lang"用于指定文檔所用語言(前面已有介紹),語言"lang"的值屬于NMTOKEN型數據。
wml元素中(zhōng)包含的内容(content)中(zhōng)除了文本、圖像等信息之外(wài),還可以包含head、template及card元素。其中(zhōng)head、template元素如果包含的話(huà)則隻可包含一(yī)次,而card元素必須至少包含一(yī)次。有關這些元素的用法我(wǒ)(wǒ)們後面介紹。
3.1.4 template元素
template元素用于爲當前卡片組中(zhōng)的所有卡片定義一(yī)個模闆,同一(yī)規定卡片的某些參數。模版中(zhōng)的事件處理功能則可将這些參數自動應用于同一(yī)卡片組中(zhōng)的所有卡片。不過,我(wǒ)(wǒ)們也可以是其中(zhōng)某個或某幾個卡片不采用模闆規定的形式,方法是在該卡片中(zhōng)定義一(yī)個同名的事件來替代模闆塊中(zhōng)相應的事件。template元素通過<template>和</template>标簽含所需内容(content)而實現模闆功能的,其語法格式如下(xià):
<template oneterforward="href" onenterbackwared="href" ontimer="href">
内容(content)
</template>
template元素包含的内容中(zhōng),除了卡片的一(yī)般參數外(wài),還可以包含任意多次的do元素和onevent元素。template元素屬性的功能及用法說明如下(xià):
1)oneterforward。當用戶在浏覽器中(zhōng)進入當前卡片時,該屬性将指定超鏈(href)的URL地址,浏覽器将據此打開(kāi)URL指定的卡片或事件。
2)oneterbackward。與上一(yī)屬性類似,該屬性也可以指定其相應卡片或事件的URL地址。如果用戶浏覽時執行prev任務,那麽浏覽器就會定位到該屬性所指定超鏈(href)的URL地址,并打開(kāi)URL指定的卡片或事件。
3)ontimer。當指定時間timer過期的時候,用戶浏覽器就根據ontimer屬性指定的URL打開(kāi)相應的卡片。
3.1.5 card元素
WML的卡片組是由一(yī)個或多個卡片(card)構成的,每個卡片都包含有一(yī)套用戶和浏覽器交互操作的配置及模式。用戶對交互操作的需求是多樣性的,所以卡片定義時也必須是多樣性的。爲此,WML提供了card元素,通過<card>和</card>标簽定義一(yī)個卡片的各種屬性、包含内容。它的語法格式如下(xià):
<card id="name" title="label" newcontext="boolean" ordered="true" onenterforward="href" onenterbackward="href" ontimer="href">
内容(content)
</card>
card元素中(zhōng)包含的内容(content)中(zhōng)除了文本、圖像信息之外(wài),還可以包含onevent、timer、do和p元素。其中(zhōng),timer元素隻可使用一(yī)次,其餘3種可使用多次。而且,如果card元素包含onevent元素或timer元素的話(huà),那麽onevent元素必須放(fàng)在最前面,timer元素放(fàng)在onevent元素的後面,随後才可以使用do或p元素。這個優先順序是不能亂的。
card元素屬性的功能及用法介紹如下(xià):
1)id。用于指定card的名字。改名字是程序導航定位的依據,可以用作程序段錨點,比如<go href="#cardname"/>。其中(zhōng)的cardname便是由id指定的卡片名。
2)title。用于爲卡片制訂一(yī)個簡單的标題或說明信息。
3)newcontext。用于指定WAP手機浏覽當用戶重新進入的時候是否需要初始化卡片中(zhōng)所有的内容。它有true和false兩種選擇,當指定newcontext="ture"時,卡片的所有内容在用戶重新進入時将進行初始化,也不清除曆史紀錄;否則,指定newcontext="false"時,将不進行初始化設置,也不清除曆史紀錄。默認狀态下(xià)的設置值爲false。另外(wài),newcontext僅當作爲go任務的一(yī)部分(fēn)時才可被執行。
4)ordered。用于向用戶手機的浏覽器指明卡片内容的組織形式,以便讓浏覽器根據自身特點及卡片内容組織及時安排顯示布局。它有兩種布爾值得設置,即true和false。
當ordered="true"時,浏覽器将按照線性順序顯示卡片各區域的内容。這個線性順序通常是大(dà)多數用戶所習慣采用的信息浏覽順序,比如發送E-mail信息時,我(wǒ)(wǒ)們依次需要E-mail首件人地址、主題及E-mail内容,這個邏輯順序就數線性順序。
當ordered="flase"時,浏覽器将根據用戶選擇或指定的順序來顯示内容。這種情況主要是用于顯示用戶選項、無序組建或用戶輸入的簡單數據紀錄等。
5)onenterforward。onenterforward事件僅當用戶使用go任務或類似于go的任務位和浏覽卡片時才可發生(shēng),即如果用戶執行go任務,則浏覽器就會定位<go>标簽中(zhōng)指定超鏈(href)的URL指定的卡片。card元素中(zhōng)的onenterforward屬性是onevent元素的一(yī)個簡單格式,用于直接指定onenterforward事件的URL地址。
6)onenterbackward。該屬性可以指定其響應時間的URL地址。如果用戶浏覽時執行prev任務,那麽浏覽器就會定位到該屬性所制定超鏈 (href)的URL地址,并打開(kāi)URL指定的卡片。onenterbackward屬性也屬于onevent元素的一(yī)個簡單格式。
7)ontimer。當指定時間timer過期的時候,用戶浏覽器就根據ontimer屬性指定的URL打開(kāi)相應的卡片。它也屬于onevent元素的一(yī)個簡單格式。
3.1.7 access元素
access元素是由一(yī)個單獨的的标簽<access>标簽實現的元素。用于定義WML整個卡片組的操作權限,即訪問控制參數。access元素必須在head元素内和其它的meta信息一(yī)起聲明,而且每個卡片組隻能有一(yī)個access元素。其語法格式如下(xià):
<head>
<access domain="domain" path="path">
...
</head>
access元素屬性的功能及用法如下(xià):
1)domain。用于指定對卡片組進行操作的URL域,默認域是當前卡片組所在的域。domain的目的是限制訪問,用戶浏覽時浏覽器将根據domain值所規定的值來得出與值匹配的地址,并訪問該地址對應的卡片或事件。 2)path。用于指定卡片組操作的其它卡片組所在的根目錄。默認目錄是“/”,即當前卡片組所在的根目錄。默認目錄的規定使得所有在domain域下(xià)的卡片組都可以操作當前卡片組。path的值是訪問時需要匹配的路徑,它的工(gōng)作原理與domain十分(fēn)相似,需要與路徑的每個子路徑相匹配,否則均屬無效。
3.1.8 meta元素
meta元素用于定義WML卡片組相關的通用meta信息。該元素是由一(yī)個單獨的标簽即<meta/>标簽實現的元素,其語法格式如下(xià):
<meta name="name"|http-equiv="name" content="value" forua="true|false" scheme="format"/>
其中(zhōng),name屬性和http-equiv屬性隻能選擇使用一(yī)個;content屬性是必選的,其值根據屬性而定;scheme屬性目前尚不支持;forua屬性爲可選屬性。各屬性功能及用法說明如下(xià):
1)content。該屬性用于指定meta信息的性質的值,是不必選的。
2)name。用于指定meta信息性質的名稱。用戶浏覽器通常忽略已經命名meta數據,網絡服務企業拒絕發送包含該屬性所指定meta數據名稱的内容。
3)http-equiv。該屬性用于替代name屬性,可将meta數據轉爲WSP或HTTP協議的響應頭。
4)forua。該屬性用于指定那些開(kāi)發者希望傳送值用戶浏覽器的性質。它有ture和fales兩個取值,如果取false,則卡片組在發送往客戶端以前必須用中(zhōng)間代理去(qù)除meta元素信息,這是因爲傳輸的協議可能改變;若取值爲true,則meta數據必須如實送往用戶的浏覽器。默認的狀态下(xià),該屬性的值爲false。
5)scheme。該屬性用于指定解釋meta信息性質值的形式或結構。具體(tǐ)的形式或結構因meta數據的類型不同而不同。
3.2 任務及其元素
WML允許我(wǒ)(wǒ)們在程序中(zhōng)指定一(yī)些任務,當某些特定的事件激活時,即可執行這些任務,從而完成需要的操作。例如,我(wǒ)(wǒ)們可以設定任務,當用戶按下(xià)相應的功能鍵時,浏覽器就可以打開(kāi)指定的卡片組或卡片。目前,WML提供了4個任務元素,即go、prev、noop和refresh,它們主要與do元素和onevent元素中(zhōng)指定的事件相響應。本節我(wǒ)(wǒ)們就對任務的這些元素做一(yī)詳細介紹。
3.2.1 go任務
go任務是通過go元素來聲明的,而go元素是通過<go>和<go/>标簽進行定義的。go元素主要用來定義浏覽器需要導航的URL地址。如果該地址是一(yī)個WML卡片或卡片組的名字,則浏覽器就會打開(kāi)并顯示相應的卡片、卡片組;否則,浏覽器就會執行該URL指定的任務或事件等。在曆史推棧中(zhōng),go任務執行的是一(yī)個“推進(push)”操作,也就是說,它執行時浏覽器浏覽的URL地址将送入曆史紀錄列表中(zhōng),以被它用。
go元素中(zhōng)可以包含任意次的setvar元素或postfield元素。postfield元素前面已有介紹,這裏不再重述,setvar元素我(wǒ)(wǒ)們後面介紹。
go任務的語法格式如下(xià):
<go href="href" sendreferer="false|true" method="get|post" accept-charset="charset">
内容(context)
<go/>
其中(zhōng)屬性的功能及用法介紹如下(xià):
1)href。該屬性用于指定目标URL地址,比如讓浏覽器顯示的卡片的地址即名稱等。屬性是必選的,其它屬性爲可選。
2)sendreferer。該屬性用于指定是否傳遞調用href所指定的URL的卡片的URL,也是當前頁的URL,即HTTP頭中(zhōng)HTTP_REFERER。有兩種選擇:true或false。其中(zhōng),默認值爲false。
3)method。與HTML中(zhōng)的表單FORM的method屬性一(yī)樣,該屬性用于指定表單是以GET的方式還是post的方式遞交,以便通用網關接口CGI處理。默認值爲get,但如果沒有指定method屬性,而<go>和<go/>之間存在postfield元素,則WAP手機浏覽器會自動以post方式傳遞。
4)accept-charset。當web服務器處理來自浏覽器的輸入信息時,該屬性可指定服務器進行數據編碼時必須采用的字符集列表。也就是說,該屬性指定的字符集替代HTTP頭裏指定的字符集,以便作爲服務器選用字符集的标準。
3.2.2 prev任務
prev任務是由prev元素實現的。該元素通常是一(yī)個單獨的标簽<prve/>,不過有時也可由<prev>和</prev>一(yī)對标簽進行定義。它用于指定将浏覽器導航至曆史推棧中(zhōng)的前一(yī)個URL地址。在浏覽器操作的曆史推棧中(zhōng),prev任務執行的是“取出”操作,将前一(yī)個URL地址取出,并把當前URL地址推進曆史推棧。如果曆史推棧中(zhōng)沒有前一(yī)個URL地址,即prev/元素不執行任何任務。
prev任務的語法格式爲:
<prev/>
或<prev> 内容(content) </prev>
在後一(yī)語法格式中(zhōng),prev元素包含的内容裏面一(yī)般是setvar元素,該元素的含義前面已有介紹,這裏不再重述,具體(tǐ)的用法随後介紹。
3.2.3 refresh任務
refresh任務由refresh元素聲明,它用于刷新當前的卡片,對卡片内指定的變量進行更新。其語法格式爲:
<refresh>
内容(context)
</refresh>
其中(zhōng)包含的内容(content)中(zhōng)一(yī)般有setvar元素,其語法格式爲<setvar name="name" value="value"/>,它可指定更新的變量名name,即更新的變量值value。另外(wài),refresh元素也可以不包含setvar元素。而通過時間限制(timer元素)對卡片進行刷新。
3.2.4 noop任務
noop任務由noop元素進行聲明,表示什麽也不做,是一(yī)個空操作,在替代卡片組級的do元素是十分(fēn)有用。該元素是一(yī)個單獨的标簽,即 <noop/> 标簽。其語法格式如下(xià):
<nnop/>
noop元素沒有屬性,下(xià)面的簡單程序中(zhōng)就包含了noop元素實現得空任務操作:
<card id="card1">
<do type="options" name="dome">
<noop/>
</do>
...
</card>
3.3 時間及其元素
WML提供了幾個元素,專門用于處理用戶浏覽器的導航和事件。利用這些元素用戶可以給某任務制定關聯事件。那麽當事件觸發時,浏覽器就會執行相應的任務,比如URL導航就是通過事件實現的。而且,事件可以和一(yī)個需要完成的任務捆綁在一(yī)起。事件捆綁時一(yī)般是通過幾種元素及其标簽聲明來實現的,如go、do和onevent等元素。下(xià)面我(wǒ)(wǒ)們就講解WML的事件元素及事件。
3.3.1 do元素
do元素提供了一(yī)個通用的事件處理機制,使得用戶可以參與當前卡片的事件處理。通過<do>和</do>标簽将用戶交互和某一(yī)個任務聯系在一(yī)起。用戶交互可以是用戶按下(xià)的功能鍵、選擇的菜單項,也可以是用戶的聲音提示。當用戶激活這些交互功能時,用戶浏覽器就會執行與do元素相關的任務。其語法格式如下(xià):
<do type="type" label="label" name="name" optional="boolean">
任務(task)
</do>
其中(zhōng)tast是與do元素關聯的動作,也是條件激活時浏覽器即将執行的内容。在do元素中(zhōng),用戶必須綁定且隻能綁定go、prev、noop和refresh四種元素所實現任務中(zhōng)的一(yī)個任務(task)。go元素用于定位制定的URL地址,prev元素用于定位并打開(kāi)前一(yī)操作或任務,doop爲空操作,refresh用于刷新當前卡片組或任務,有關他們的詳細用法我(wǒ)(wǒ)們後面會陸續介紹。
do元素可以用于卡片一(yī)級,也可用于卡片組一(yī)級。當用于卡片一(yī)級時,do元素必須包含在card元素中(zhōng);而用于卡片組一(yī)級時,do元素必須包含在template元素中(zhōng),由此定義的do元素将同時應用于當前卡片組的所有卡片。此時如果某個卡片不想應用模闆中(zhōng)的do元素及其任務,則需采用我(wǒ)(wǒ)們前面介紹的方法,使用同名事件處理來替代模闆中(zhōng)的do元素的事件處理。而且,不論事件關聯的任務是否相同,當do元素定義的事件名稱相同時,卡片的do元素将忽視卡片組一(yī)級do元素的影響,及卡片一(yī)組的do元素将被優先執行。
另外(wài),含有空操作任務的do元素,不論它是否被激活,它都不會傳送或顯示到用戶的浏覽器中(zhōng),這在一(yī)定程度上可以加快浏覽器的工(gōng)作效率,因爲服務器端體(tǐ)它抛棄了一(yī)些空任務的判斷。 do元素各個屬性的功能及用法講解如下(xià):
1)type。用于指定do元素的類型(type),也即需要關聯、綁定的用戶交互事件,是必選屬性。用戶浏覽器接到這些事件後,就會激活它們并執行相應的操作與處理。如果在一(yī)個卡片中(zhōng)定義了多個do元素并擁有同樣type,那麽用戶必須爲每個do指定不同的事件名才行,否則就會發生(shēng)判斷混亂的錯誤。
do元素典型的類型(type)及執行條件介紹如下(xià):
1、accept。當用戶選擇或按下(xià)相應功能鍵時(accept)、選項、命名或按鈕時,浏覽器接收或激活當前所作選擇。 2、prev。激活prev鍵時,浏覽器将導航到曆史記錄中(zhōng)的前一(yī)個卡片。
3、help。激活HELP功能鍵或相應按鈕、命名時,浏覽器顯示與當前内容相關的幫助信息。
4、reset。激活reset功能鍵或相應按鈕、命名時,清除或重置當前卡片組或浏覽器的狀态。
5、options。激活options功能鍵或相應按鈕、命名時,浏覽器顯示與當前内容有關的選項或附加操作。
6、delete。激活delete功能鍵或相應按鈕、命名時,删除當前項目或選擇。
7、unknown。如果給出的類型不能爲do元素所識别,則一(yī)律按照unknown型處理,相當于類型爲空,即type=""。
8、vnd.*。vnd.*及其它不同大(dà)小(xiǎo)寫組合[Vv][Nn][Dd].*。這種類型定義的都是vnd.cotype,用于激活供應商(shāng)或用戶浏覽器自定義的某個特定功能,其中(zhōng)co爲公司(company)名的縮寫。
9、X-*與X-*。擴展類型,目前WML中(zhōng)還沒有使用。
2)label。該屬性指定的文本字符串可以表示用戶的交互事件。例如,當把某一(yī)個任務綁定在accept鍵上之後,并設置了label屬性,比如label="gone",那麽浏覽器就會将label的值“gome”顯示在屏幕上;如果不指定,浏覽器則會顯示默認的“ok”字符串。爲了保證能在較小(xiǎo)的手機上顯示出來,label的屬性值最多不超過6個字符。不過這可能因WAP手機品牌、型号不同而稍有不同,有的手機最多不能超過5個字符。而且,如果手機浏覽器不支持動态标簽顯示,那麽它就會忽視label屬性。
3)該屬性用于指定do元索所綁定事件的名稱。如果多個do元素制定了相同的name,那麽他們綁定的事件統屬一(yī)個。如果卡片一(yī)般與卡片組一(yī)級中(zhōng)do元素制定了相同的事件名,那麽卡片一(yī)級的時間将被優先執行,卡片組一(yī)級的事件将被忽視。
WML規定,在同一(yī)卡片或在同一(yī)模闆中(zhōng),不得指定具有相同事件名(name)的兩個或兩個以上的do元素。
另外(wài),如果name屬性值爲空,則相當于沒有指定name屬性,這時do元素執行的事件或操作由type的屬性值決定。
4)optional。指定浏覽器是否忽視do元素及其包含的任務。有兩個可選值:true和false。如果值爲true,則浏覽器将忽視當前do元素,即不執行它所綁定的任務。反之,若值爲false,則執行do元素。
3.3.2 ontimer事件
ontimer用于指定一(yī)個事件。當<timer/> 标簽指定的時間到期後,浏覽器就執行ontimer所指定的這個事件。ontimer的時間可以是一(yī)個URL地址,一(yī)個卡片組,一(yī)個WML網頁,一(yī)幅圖像或其他符合URL定位的規則的文件。<timer/>标簽指定的時間爲正整數,單位大(dà)小(xiǎo)爲1/10秒。
ontimer時間隻能包含在card元素或template元素的标簽中(zhōng)進行定義,其語法形式如下(xià):
<card id="name" title="label" newcontext="boolean" ordered="true" onenterforward="href" onenterbackward="href" ontimer="href">
内容(content)
</card>
或:
<template onenterforward="href" onenterbackward="href" ontimer="href">
内容(content)
</template>
ontimer事件隻有一(yī)個屬性,即ontimer。它用于指定一(yī)個超鏈(href)的URL地址,指定時間timer過期的時候,用戶浏覽器就會按照超鏈(href)的URL打開(kāi)相應的卡片。
3.3.3 onenterforward事件
onenterforward事件僅當用戶使用go任務或類似于go任務的任務來定位和浏覽卡片時才可發生(shēng)。設置onenterforward事件後,當用戶進入當前卡片組時,浏覽器就會定位onenterforward屬性或<go/>标簽中(zhōng)指定超鏈(href)的URL地址,并打開(kāi)URL指定的卡片。
onenterforward事件需要包含在card元素、template元素或onevent元素的标簽中(zhōng)進行定義,其語法格式爲:
<card id="name" title="label" newcontext="boolean" ordered="true" onenterforward="href" onenterbackward="href" ontimer="href">
内容(content)
</card>
或:
<template onenterforward="href" onterbackward="href" ontimer="href">
内容(content)
</template>
或:
<onevent type="onenterforward">
<go href="href"/>其他任務(task)
</onevent>
前兩種格式中(zhōng),onenterforward事件作爲card元素或template元素标簽中(zhōng)的一(yī)個屬性進行定義的,該屬性即爲onenterforward,它制定了一(yī)個超鏈(href)的URL地址,當用戶進入當前卡片時,浏覽器就據此打開(kāi)URL指定的卡片。這種格式制定的任務相當與go任務。
3.3.4 onenterbackward事件
當用戶使用prev任務或類似的任務來導航至某一(yī)卡片時,onenterbackward事件才可發生(shēng)。換句話(huà)說,當用戶從曆史堆棧中(zhōng)選取URL地址,并通過浏覽器打開(kāi)這一(yī)地址對應的卡片時,onenterbackward事件才可能發生(shēng)。
與onenterforward事件類似,onenterbackward事件也需要包含在card元素、template元素或onevent元素的标簽中(zhōng)進行定義。其具體(tǐ)語法格式如下(xià):
<card id="name" title="label" newcontext="boolean" ordered="true" onenterforward="href" onenterbackward="href" ontimer="href">
内容(content)
</card>
或:
<template onenterforward="href" onterbackward="href" ontimer="href">
内容(content)
</template>
或:
<onevent type="onterbackward">
<go href="href"/>其他任務(task)
</onevent>
前兩種格式中(zhōng),onterbackward事件是作爲card元素或template元素标簽中(zhōng)的一(yī)個屬性進行定義的,該屬性即爲onterbackward,它指定了一(yī)個超鏈(href)的URL地址,當用戶使用prev等任務項回到地址時,浏覽器就會打開(kāi)URL指定的卡片。
後一(yī)種格式中(zhōng),onterbackward事件作爲onevent元素的一(yī)給類型值,并結合<go/>标簽指定事件激活時浏覽器需要打開(kāi)的卡片的URL地址。
3.3.5 onpick事件
onpick事件在定義時一(yī)般通過onpick屬性指定一(yī)些項目,當用戶選擇或取消這些項目時,即可觸發onpick事件,執行onpick屬性所指定的項目,如打開(kāi)卡片、卡片組或其他事件等。onpick事件通常在option元素的标簽中(zhōng)進行定義,其語法格式如下(xià):
<option value="value" onpick="href">
内容(content)
</opiton>
可以看出onpick時間作爲option元素的一(yī)個屬性來定義具體(tǐ)的動作。這個屬性即onpick,它指定了事件觸發時浏覽器需要定位的超鏈的URL地址。
3.3.6 onevent元素
onevent元素通過<onevent>和</onevent>标簽可以把包含的任務與特定的時間捆綁在一(yī)起。當用戶激活這一(yī)特定事件時,onevent元素所綁定的任務就會被立即執行。onevent元素的語法格式如下(xià):
<onevent type="type">
任務(task)
</onevent>
其中(zhōng)task是與onevent元素關聯的動作,也是條件激活時浏覽器即将執行的内容。與do元素一(yī)樣,onevent元素中(zhōng)用戶也必須綁定且隻能綁定go、prev、noop和refresh四種元素所實現任務中(zhōng)的一(yī)個任務,go元素用于定位指定URL地址、prev元素用于定位并打開(kāi)前一(yī)操作或任務,noop爲空操作,refresh用于刷新當前卡片組或任務。
onevent元素隻有一(yī)個屬性,即type屬性,它是必選屬性,主要用于定義特定事件的名稱。該屬性值的數據類型爲CDATA型。
3.3.7 postfield元素
postfield元素用于指定當浏覽器接到URL請求時,向原服務器(origin server)傳送的域名其域值。傳輸時,傳輸域及傳輸值的實際編碼方式主要依賴于浏覽器與原服務器的通信方式。postfield元素是通過單獨?lt;postfield/>标簽進行定義的,其語法格式如下(xià):
<postfield name="name" value="value">
它共有兩個屬性:name與value,它們的取值均屬于VDATA型數據。其中(zhōng),name屬性用于指定傳輸域的名稱,value屬性用于定義傳輸的值。這兩個屬性均爲必選屬性。
3.4 變量設置元素與變量設置的有關規定
幾乎所有的WML内容都可通過設置參數來實現,這爲我(wǒ)(wǒ)們靈活的開(kāi)發WML程序提供了方便。本節我(wǒ)(wǒ)們先介紹一(yī)個變量設置元素,然後再介紹與變量設置有關的一(yī)些具體(tǐ)規定。
3.4.1 setvar元素
setvar元素用于指定在當前上下(xià)文内容中(zhōng)的變量的值,從側面影響正在運行的任務。其語法格式如下(xià): <setvar name="name" value="value"/>
它有兩個屬性:name和value。前者用于指定變量的名稱,後者用于指定所需賦給變量的值。這兩個屬性都是必選的,它們的數據類型均屬于VDATA型。如果name屬性所規定的變量名不合法或不符合運行環境的要求,那麽setvar元素在WML程序運行中(zhōng)将被忽視,不能發揮其應有的作用。
3.4.2 變量設置
WML編程中(zhōng)可以使用變量,變量使用前必須進行定義。變量的命名原則及定義方法我(wǒ)(wǒ)們上一(yī)章已經講過了,這裏不再重述。在這裏,我(wǒ)(wǒ)們主要介紹WML程序中(zhōng)設置變量的規定。
如前所述,setvar元素可用來設置變量,設置時setvar元素一(yī)般需要在go、prev或refresh元素中(zhōng)進行定義。另外(wài),利用input和select元素也可以設置變量。其中(zhōng)前者是将用戶輸入的文本賦給變量,作爲變量的值;而後者則将用戶從option元素中(zhōng)選擇的value屬性的值賦給變量。有關input元素和select元素的語法格式及具體(tǐ)用法我(wǒ)(wǒ)們後面再行介紹。
設置變量時,以下(xià)幾種情況還應當引起大(dà)家注意:
1)可以使用WMLScript的變量值設置WML的變量,反之亦然。也就是說,使用WML及WMLScript編寫程序時,它們可以使用同名編程。
2)在WAP開(kāi)發工(gōng)具中(zhōng),通常提供有對變量進行管理和維護的選項卡或對話(huà)框,開(kāi)發人員(yuán)從中(zhōng)也可以對相應的變量進行設置及編輯。
3)在當前上下(xià)文内容中(zhōng),可以使用card元素的newcontext屬性來消除所有的變量值。
3.5 用戶輸入處理元素
通過WAP手機的按鍵,用戶可以向浏覽器顯示的卡片中(zhōng)輸入數據信息或操作信息。WML爲此專門提供了處理用戶輸入的元素。
3.5.1 input元素
input元素用于定義文本實體(tǐ)對象,包含有對輸入文本内容的格式、數據類型、長度、值、變量名等多種屬性的具體(tǐ)規定。當用戶輸入滿足input元素的規定時,則接收輸入信息,并賦給指定的變量靈活進行相應的操作、處理;否則,就通過浏覽器給出具體(tǐ)的處理意見,并進行是單個輸入處理或變量初始化操作,比如刷新卡片以讓用戶重新輸入,或給用戶指出輸入錯誤所在并等待進一(yī)步的處理指令等。input元素是WML編程中(zhōng)處理用戶交互活動的重要元素,它通過單獨的<input/>标簽進行定義,其語法格式如下(xià):
<input name="variable" title="label" type="type" value="value" default="default" format="specifier" emptyok="false|true" size="n" maxlength="n" tabindex="n"/>
其中(zhōng)除了name屬性是必選的以外(wài),其他屬性都是可選的。這些屬性的功能和用法介紹如下(xià): 1)name。該屬性用于指定用來保存用戶輸入文本的變量和名稱。定義name屬性後WML将根據該屬性也即變量名,爲即将輸入的文本實體(tǐ)對象與之存儲空間,以便接收用戶輸入。
2)title。該屬性用于input元素的标簽,通常是位于輸入框前的提示信息。
3)type。用于指定文本輸入區的類型,有text和password兩種選擇。默認值爲text,指定的用戶可以輸入文本,而且輸入的文本會同時逐漸響應并顯示在浏覽器中(zhōng)。如果選擇password,則指定用戶輸入的文本作爲密碼文本處理,WML程序按文本實體(tǐ)接收輸入的數據,而浏覽器上響應用戶輸入顯示時逐漸均爲星号(*),由此起到保密的目的。
4)value。該屬性用于指定name屬性所定義變量的值,它将顯示在輸入框中(zhōng)。
5)default。該屬性用于指定name屬性所定義變量的默認值。
6)format。該屬性用于格式化輸入的數據。
7)maxlength。該屬性用于指定用戶可輸入字符串的最大(dà)長度。該屬性的上限爲256,最多不能超過256個字符。
8)emptyok。用于指定用戶是否可以不在輸入框内輸入内容。
9)size。該屬性用于指定輸入框的寬度,寬度值爲字符個數。
10)tabindex。用于指定多個輸入框存在時,類似于HTML中(zhōng)Tab鍵的具體(tǐ)位置。
3.5.2 select元素
選擇列表屬于輸入元素,允許用戶從選項列表中(zhōng)選擇需要的項目。WML不僅支持單選列表,及單選項,而且支持多選列表,也就是複選項。select元素允許用戶從選列表中(zhōng)選擇所需的項目。列表中(zhōng)的選項采用後面我(wǒ)(wǒ)們就要講到的option元素進行定義,一(yī)般是一(yī)行格式化的文本。編程時,我(wǒ)(wǒ)們可以使用optgroup元素将option元素的情況項目分(fēn)成不同級别或層次的選項組,爲用戶選擇提供方便。
select元素是通過<select>和</select>标簽進行定義的,語法格式如下(xià):
<select title="label" multiple="false|true" name="variable" default="default" iname="index_var" ivalue="default" tabindex="n">
内容(content)
</select>
其中(zhōng)所有屬性都是可選的。select元素各個屬性的功能和用法介紹如下(xià):
1)multiple。該屬性用于指定選擇列表是否可以使用複選框。
2)name。該屬性用于指定接收選項值的變量的名稱,變量值由value屬性預設定。
3)value。用于制定name屬性所定義變量的默認值。
4)iname。用于指定包含排序号的變量的名稱。
5)ivalue。用于指定選擇列表中(zhōng)被選中(zhōng)選項的值,是一(yī)個具有排序号性質的值。 6)title。用于指定選擇列表的标題。
7)tabindex。用于指定當前選擇光标在選擇列表中(zhōng)的具體(tǐ)位置,該位置即爲當前選擇操作将要選擇的選項所在的位置。
3.5.3 option元素
option元素用于定義select元素中(zhōng)的一(yī)組單選項。它通過<option>和</option>标簽進行定義,并可包括事件和單選項的顯示文本等信息,其語法格式如下(xià):
<option title="label" value="value" onpick="href">
内容(content)
</option>
option元素的屬性均爲可選,各屬性功能及用法說明如下(xià):
1)value。該屬性用于設置鍵值。當用戶選到該選項之後,option元素就會将該值賦給selet元素的name屬性所指定的變量。
2)title。用于option元素制定的一(yī)個标題,以便提示用戶操作。
3)onpick。該屬性用于指定用戶選到該項并按accept鍵後所打開(kāi)卡片組的L。
3.5.4 optgroup元素
optgroup元素用于将多個相關的option元素進行分(fēn)組,用戶浏覽器可以借助這種分(fēn)組來安排選項列表的顯示布局,以方便用戶選擇。optgroup元素是通過<optgroup>和</optgroup>标簽進行定義的,其語法格式如下(xià):
<optgroup title="label">
内容(content)
</optgroup>
它所包含的内容中(zhōng)需要包含至少一(yī)次option元素或其他的optgroup元素。
optgroup元素隻有一(yī)個屬性,即title屬性,用于定義optgroup元素的标題,以便提示用戶操作。
3.5.5 fieldset元素
fieldset元素用于設定輸入框和相應的說明文本,從而用戶就可以利用input元素等借助該輸入框輸入所需的數據信息。fieldset元素的語法格式如下(xià):
<fieldset title="label">
内容(content)
</fieldset>
由于fieldset元素和輸入有關,所以它們的内容中(zhōng)可以包含與輸入有關的其他元素。 其語法格式可以看出,fieldset元素隻有一(yī)個屬性,即title屬性,用于定義fieldset元素的标題,以便提示用戶操作。
3.6 錨、圖像、定時器及其元素
本節我(wǒ)(wǒ)們講解與定位和定時控制有關的3類元素,包括anchor、a、img、timer幾種元素。使用它們可以在WML卡片中(zhōng)創建超鏈接,或在文本流中(zhōng)顯示一(yī)幅圖像,或設置定時器來控制用戶操作及卡片顯示等。
3.6.1 anchor元素
anchor元素用于創建一(yī)個超鏈接的頭部,超鏈接的其餘部分(fēn)爲用戶指定的URL地址。當程序運行中(zhōng)用戶選中(zhōng)該超鏈接時,浏覽器就會被引入到超連接指定的地址,如其他卡片組或同一(yī)卡片組中(zhōng)的其他卡片。
anchor元素由<anchor>和</anchor>标簽進行定義,它所包含的超連接必須是真實存在的,而且是能夠正确連接的超連接。anchor元素定位超鏈接時,必須通過相關的任務元素完成定位處理,如go元素、prev元素、refresh元素等。不過,在anchor元素中(zhōng)隻能包含1個定位任務,多于一(yī)個時會導緻WML運行錯誤。
anchor元素的語法格式如下(xià):
<anchor title="label">
任務
文本
</anchor>
其中(zhōng)的任務需要包含一(yī)個進行定位的任務元素。可以看到,anchor元素隻有一(yī)個屬性,即title屬性,用于定義fieldset元素的标題,它用于定義即title屬性,用于定義fieldset元素的标題,以便提示用戶操作。元素的超連接的标題。用戶浏覽時可利用這一(yī)标題來及時了解操作的超連接的名稱或者有關提示信息。
3.6.2 a元素
a元素是由anchor元素的簡化形式,它内含了anchor元素需要包含的go元素功能愛完成超連接定位,并且不再包含其他任何變量設置。它使用<a>和</a>标簽進行定義。
3.6.3 img元素
img元素用于格式化的文本中(zhōng)防止和顯示一(yī)幅圖像。當然,前提是用戶所用的浏覽器必須支持圖像顯示。img元素由單獨的<img/>标簽進行定義,它不包含其它元素。其語法格式如下(xià):
<img alt="text" src="url" localsrc="icon" aligh="alignment" height="n" width="n" vspace="n" hspace="n"/>
屬性中(zhōng)alt和src是必須要有的,其他可選。另外(wài),需要注意的是img元素要放(fàng)在p元素裏
,而不能放(fàng)在do或option元素裏。
img元素各個屬性的功能和用法介紹如下(xià):
1)alt。該屬性用來指定當手機不支持圖像顯示用來替代現實的文字文本。
2)src。該屬性用于指定圖像文件的URL地址。
3)localscr。該屬性用來指定顯示存在手機ROM的圖标文件。
4)align。該屬性用來指定圖像顯示是相對當前文本行的對齊方式。
5)height。用于設定圖像顯示時的高度。
6)width。與height屬性類似,用于設定圖像顯示時的寬度或寬度百分(fēn)比。
7)vspace。該屬性用于指定圖像顯示時的上邊距和下(xià)邊距,默認值爲0。
8)hspace。與vspace屬性類似,該屬性用于指定圖像顯示時的左邊距和右邊距。
3.6.4 timer元素
timer元素用于設定一(yī)個定時器,可以延時顯示卡片組、卡片,或實現WML程序的等待操作,或在卡片組和卡片之間實現切換以取得動畫效果。
一(yī)個卡片隻能使用一(yī)次timer元素,也即是說隻能設置一(yī)個定時器。當用戶進入還有定時器的卡片時,定時器就會開(kāi)始工(gōng)作,其時間值就會逐漸減小(xiǎo)。timer元素指定的時間值單位1/10秒。其語法格式如下(xià):
<timer name="variable" value="value"/>
它的兩個屬性中(zhōng),value屬性是必選的,name屬性爲可選。name屬性用于指定表示時間值的變量的名稱,該變量的取值由定時器的時間值決定,時間值減小(xiǎo),該變量的值也相應地減小(xiǎo),并終始保持不變。
value屬性用于指定name屬性所定義變量的初始值。如果name屬性定義的變量在定時器初始化時還沒有值,那麽該變量就将采用value屬性指定的值;否則,改變量就會忽視value屬性的值。如果沒有定義name屬性,也就是說,沒有指定時間變量,那麽timer元素指定的定時器仍将采用value屬性的值進行延時處理。
3.7 文本格式化及其元素
WML程序中(zhōng),爲使顯示的文本呈現出豐富的樣式,WML提供了一(yī)些用于格式化的元素,我(wǒ)(wǒ)們通過這些元素及其相應的标簽可以對文本進行标注和控制,從而實現不同的顯示效果。
3.7.1 增強元素
增強元素都是一(yī)些成對的标簽,用于指定文本的增強顯示信息。比如b元素通過<b></b>标簽可以控制其中(zhōng)的文本按照粗體(tǐ)字進行顯示。 3.7.2 br元素
“br”即break,是用于換行的元素,它是使用單獨的<br/>标簽進行定義的。br元素的作用相當于插入一(yī)個回車(chē)符。
3.7.3 p元素
“p”即指paragraph,p元素用于劃分(fēn)段落,是當前文本換行并插入一(yī)個空白(bái)行。p元素可以使用單獨的<p/>标簽進行定義,也可以使用<p>和</p>标簽成對的進行定義。其語法格式爲:
<p aligh="alignment" mode="wrapmode"/>

<p aligh="alignment" mode="wrapmode"/>
文本
</p>
1)align。該屬性用于設置段落在浏覽器中(zhōng)的對齊方式,有left、center和righ三種取值。這三種參數值分(fēn)别表示p元素當前定義的文本段落及浏覽器窗口的左側、中(zhōng)間和右側進行對齊。默認值爲left,及段落與浏覽器窗口的左側對齊排列。
2)mode。該屬性用于指定下(xià)一(yī)段落的換行方式。
3.7.4 td元素
td元素用于規定表格單元格的内容。其語法格式如下(xià):
<td> 單元格内容 </td>
3.7.5 tr元素
WML中(zhōng)的表格是按照行、列進行組織的。一(yī)個表格由若幹行組成,每行由若幹列組成。tr元素用于定義表格的行。其語法格式如下(xià):
<tr> 單元格内容 </td>
</tr>
3.7.6 table元素
table元素與tr元素、td元素一(yī)起,可用來創建能容納文本和圖像的表格,并可設置表格各列中(zhōng)文本和圖像的對齊方式。其語法格式如下(xià):
<table align="alignment" title="label" columns="n">

<table align="alignment" title="label" columns="n">
内容
</table>
其中(zhōng)各個屬性的功能和用法介紹如下(xià):
1)align。該屬性用于指定表各個列中(zhōng)文本和圖像的對齊方式。
2)title。該屬性用于指定table元素的标題。
3)columns.該屬性用于指定表格的列數,該數不能爲0。
文章來源:http://www.host01.com/article/Wap/wap001/0592216285337432.htm
免責聲明:本站相關技術文章信息部分(fēn)來自網絡,目的主要是傳播更多信息,如果您認爲本站的某些信息侵犯了您的版權,請與我(wǒ)(wǒ)們聯系,我(wǒ)(wǒ)們會即時妥善的處理,謝謝合作!