麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

無線標記語言(WML)基礎之編程方法

2019-11-18 16:13:54
字體:
來源:轉載
供稿:網友

  元素和標簽是WML的主要語法,它們決定了WML編程的基本原則。本章我們將從WML的元素、標簽、屬性等方面詳細講解WML的編程方法。學習本章知識之前,讀者應當了解WML元素與標簽的區別。WML的元素通常有一個首標簽、內容、其它元素及一個尾標簽組成。也就說,單獨的標簽是一個元素,成對出現的標簽與其包含的內容也構成一個元素。由于元素牽涉及標簽,標簽又涉及屬性。

  3.1 卡片、卡片組及其屬性

  我們前面介紹了WML的卡片與卡片組,主要從概念和相互關系的角度進行了分析。我們這里則從卡片、卡片組的組成、相關元素、標簽技術性等編程角度進行分析和講解。

  3.1.1 共有屬性

  WML元素的共有屬性主要有3個:id、class和xml:lang屬性。

  WML的所有元素都有兩個核心屬性,即標示(id)和類(class)屬性。它們主要用于服務器方的信息傳輸。其中,id屬性用于定義元素在卡片組中的唯一標示,即它的名稱;class屬性用于給當前元素定義一個或更多的類(class)。與卡片組一樣,類(class)也是有名字的,而且多個元素可以使用一個類(class)名。具有相同類名的單一卡片組中的所有元素均可被看作相同類的一個部分。類名是區分大小寫的。如果在class屬性列表中,一個元素多個唯一的類名,那么該元素可以看作這些類中的一部分。具有同一屬性的多個類名必須用兩個以上的空格間隔,WML程序執行時將忽視其中多余的類名及其屬性。

  另外,在WML程序,所有包含文本的元素均具有“xml:lang”屬性。該屬性用于指定當前元素及其屬性所用的描述語言,如英國英語、美國英語、法語、德語等,并可以為用戶瀏覽器選擇顯示文本的語言提供依據。

  3.1.2 WML程序的文件頭

  合法的WML卡片組均屬合法的WML文件,因此它必須包含WML的聲明及文件類型的聲明。典型的WML程序的文件頭包括我們前面多次提到的以下兩行程序:

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//wapforun//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

  編寫WML程序時,我們必須寫入這兩行程序,并放在程序的開始處。其中"-//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”,其中前者制定WML的原文類型,后者制定WML程序編譯后代碼類型。

  3.1.3 WML元素

  WML的WML元素用于定義一個卡片組,并通過<wml>與</wml>標簽包含和封裝該卡片組中的所有卡片及信息。它的語法格式如下:

<wml xml:lang="lang">
內容(content)
</wml>

  其中xml:lang="lang"用于指定文檔所用語言(前面已有介紹),語言"lang"的值屬于NMTOKEN型數據。

  wml元素中包含的內容(content)中除了文本、圖像等信息之外,還可以包含head、template及card元素。其中head、template元素如果包含的話則只可包含一次,而card元素必須至少包含一次。有關這些元素的用法我們后面介紹。

  3.1.4 template元素

  template元素用于為當前卡片組中的所有卡片定義一個模板,同一規定卡片的某些參數。模版中的事件處理功能則可將這些參數自動應用于同一卡片組中的所有卡片。不過,我們也可以是其中某個或某幾個卡片不采用模板規定的形式,方法是在該卡片中定義一個同名的事件來替代模板塊中相應的事件。template元素通過<template>和</template>標簽含所需內容(content)而實現模板功能的,其語法格式如下:

<template oneterforward="href" onenterbackwared="href" ontimer="href">
內容(content)
</template>

  template元素包含的內容中,除了卡片的一般參數外,還可以包含任意多次的do元素和onevent元素。template元素屬性的功能及用法說明如下:

  1)oneterforward。當用戶在瀏覽器中進入當前卡片時,該屬性將指定超鏈(href)的URL地址,瀏覽器將據此打開URL指定的卡片或事件。

  2)oneterbackward。與上一屬性類似,該屬性也可以指定其相應卡片或事件的URL地址。如果用戶瀏覽時執行PRev任務,那么瀏覽器就會定位到該屬性所指定超鏈(href)的URL地址,并打開URL指定的卡片或事件。

  3)ontimer。當指定時間timer過期的時候,用戶瀏覽器就根據ontimer屬性指定的URL打開相應的卡片。

  3.1.5 card元素

  WML的卡片組是由一個或多個卡片(card)構成的,每個卡片都包含有一套用戶和瀏覽器交互操作的配置及模式。用戶對交互操作的需求是多樣性的,所以卡片定義時也必須是多樣性的。為此,WML提供了card元素,通過<card>和</card>標簽定義一個卡片的各種屬性、包含內容。它的語法格式如下:

<card id="name" title="label" newcontext="boolean" ordered="true" onenterforward="href" onenterbackward="href" ontimer="href">
內容(content)
</card>

  card元素中包含的內容(content)中除了文本、圖像信息之外,還可以包含onevent、timer、do和p元素。其中,timer元素只可使用一次,其余3種可使用多次。而且,如果card元素包含onevent元素或timer元素的話,那么onevent元素必須放在最前面,timer元素放在onevent元素的后面,隨后才可以使用do或p元素。這個優先順序是不能亂的。

  card元素屬性的功能及用法介紹如下:

  1)id。用于指定card的名字。改名字是程序導航定位的依據,可以用作程序段錨點,比如<go href="#cardname"/>。其中的cardname便是由id指定的卡片名。

  2)title。用于為卡片制訂一個簡單的標題或說明信息。

  3)newcontext。用于指定WAP手機瀏覽當用戶重新進入的時候是否需要初始化卡片中所有的內容。它有true和false兩種選擇,當指定newcontext="ture"時,卡片的所有內容在用戶重新進入時將進行初始化,也不清除歷史紀錄;否則,指定newcontext="false"時,將不進行初始化設置,也不清除歷史紀錄。默認狀態下的設置值為false。另外,newcontext僅當作為go任務的一部分時才可被執行。

  4)ordered。用于向用戶手機的瀏覽器指明卡片內容的組織形式,以便讓瀏覽器根據自身特點及卡片內容組織及時安排顯示布局。它有兩種布爾值得設置,即true和false。

  當ordered="true"時,瀏覽器將按照線性順序顯示卡片各區域的內容。這個線性順序通常是大多數用戶所習慣采用的信息瀏覽順序,比如發送E-mail信息時,我們依次需要E-mail首件人地址、主題及E-mail內容,這個邏輯順序就數線性順序。

  當ordered="flase"時,瀏覽器將根據用戶選擇或指定的順序來顯示內容。這種情況主要是用于顯示用戶選項、無序組建或用戶輸入的簡單數據紀錄等。

  5)onenterforward。onenterforward事件僅當用戶使用go任務或類似于go的任務位和瀏覽卡片時才可發生,即如果用戶執行go任務,則瀏覽器就會定位<go>標簽中指定超鏈(href)的URL指定的卡片。card元素中的onenterforward屬性是onevent元素的一個簡單格式,用于直接指定onenterforward事件的URL地址。

  6)onenterbackward。該屬性可以指定其響應時間的URL地址。如果用戶瀏覽時執行prev任務,那么瀏覽器就會定位到該屬性所制定超鏈 (href)的URL地址,并打開URL指定的卡片。onenterbackward屬性也屬于onevent元素的一個簡單格式。

  7)ontimer。當指定時間timer過期的時候,用戶瀏覽器就根據ontimer屬性指定的URL打開相應的卡片。它也屬于onevent元素的一個簡單格式。

  3.1.7 access元素

  access元素是由一個單獨的的標簽<access>標簽實現的元素。用于定義WML整個卡片組的操作權限,即訪問控制參數。access元素必須在head元素內和其它的meta信息一起聲明,而且每個卡片組只能有一個access元素。其語法格式如下:

<head>
<access domain="domain" path="path">
...
</head>

  access元素屬性的功能及用法如下:

  1)domain。用于指定對卡片組進行操作的URL域,默認域是當前卡片組所在的域。domain的目的是限制訪問,用戶瀏覽時瀏覽器將根據domain值所規定的值來得出與值匹配的地址,并訪問該地址對應的卡片或事件。 2)path。用于指定卡片組操作的其它卡片組所在的根目錄。默認目錄是“/”,即當前卡片組所在的根目錄。默認目錄的規定使得所有在domain域下的卡片組都可以操作當前卡片組。path的值是訪問時需要匹配的路徑,它的工作原理與domain十分相似,需要與路徑的每個子路徑相匹配,否則均屬無效。

  3.1.8 meta元素

  meta元素用于定義WML卡片組相關的通用meta信息。該元素是由一個單獨的標簽即<meta/>標簽實現的元素,其語法格式如下:

<meta name="name"http-equiv="name" content="value" forua="truefalse" scheme="format"/>

  其中,name屬性和http-equiv屬性只能選擇使用一個;content屬性是必選的,其值根據屬性而定;scheme屬性目前尚不支持;forua屬性為可選屬性。各屬性功能及用法說明如下:

  1)content。該屬性用于指定meta信息的性質的值,是不必選的。

  2)name。用于指定meta信息性質的名稱。用戶瀏覽器通常忽略已經命名meta數據,網絡服務企業拒絕發送包含該屬性所指定meta數據名稱的內容。

  3)http-equiv。該屬性用于替代name屬性,可將meta數據轉為WSP或HTTP協議的響應頭。

  4)forua。該屬性用于指定那些開發者希望傳送值用戶瀏覽器的性質。它有ture和fales兩個取值,如果取false,則卡片組在發送往客戶端以前必須用中間代理去除meta元素信息,這是因為傳輸的協議可能改變;若取值為true,則meta數據必須如實送往用戶的瀏覽器。默認的狀態下,該屬性的值為false。

  5)scheme。該屬性用于指定解釋meta信息性質值的形式或結構。具體的形式或結構因meta數據的類型不同而不同。
3.2 任務及其元素

  WML允許我們在程序中指定一些任務,當某些特定的事件激活時,即可執行這些任務,從而完成需要的操作。例如,我們可以設定任務,當用戶按下相應的功能鍵時,瀏覽器就可以打開指定的卡片組或卡片。目前,WML提供了4個任務元素,即go、prev、noop和refresh,它們主要與do元素和onevent元素中指定的事件相響應。本節我們就對任務的這些元素做一詳細介紹。

  3.2.1 go任務

  go任務是通過go元素來聲明的,而go元素是通過<go>和<go/>標簽進行定義的。go元素主要用來定義瀏覽器需要導航的URL地址。如果該地址是一個WML卡片或卡片組的名字,則瀏覽器就會打開并顯示相應的卡片、卡片組;否則,瀏覽器就會執行該URL指定的任務或事件等。在歷史推棧中,go任務執行的是一個“推進(push)”操作,也就是說,它執行時瀏覽器瀏覽的URL地址將送入歷史紀錄列表中,以被它用。

  go元素中可以包含任意次的setvar元素或postfield元素。postfield元素前面已有介紹,這里不再重述,setvar元素我們后面介紹。

  go任務的語法格式如下:

<go href="href" sendreferer="falsetrue" method="getpost" accept-charset="charset">
內容(context)
<go/>

  其中屬性的功能及用法介紹如下:

  1)href。該屬性用于指定目標URL地址,比如讓瀏覽器顯示的卡片的地址即名稱等。屬性是必選的,其它屬性為可選。

  2)sendreferer。該屬性用于指定是否傳遞調用href所指定的URL的卡片的URL,也是當前頁的URL,即HTTP頭中HTTP_REFERER。有兩種選擇:true或false。其中,默認值為false。

  3)method。與Html中的表單FORM的method屬性一樣,該屬性用于指定表單是以GET的方式還是post的方式遞交,以便通用網關接口CGI處理。默認值為get,但如果沒有指定method屬性,而<go>和<go/>之間存在postfield元素,則WAP手機瀏覽器會自動以post方式傳遞。

  4)accept-charset。當web服務器處理來自瀏覽器的輸入信息時,該屬性可指定服務器進行數據編碼時必須采用的字符集列表。也就是說,該屬性指定的字符集替代HTTP頭里指定的字符集,以便作為服務器選用字符集的標準。

  3.2.2 prev任務

  prev任務是由prev元素實現的。該元素通常是一個單獨的標簽<prve/>,不過有時也可由<prev>和</prev>一對標簽進行定義。它用于指定將瀏覽器導航至歷史推棧中的前一個URL地址。在瀏覽器操作的歷史推棧中,prev任務執行的是“取出”操作,將前一個URL地址取出,并把當前URL地址推進歷史推棧。如果歷史推棧中沒有前一個URL地址,即prev/元素不執行任何任務。

  prev任務的語法格式為:

<prev/>
或<prev> 內容(content) </prev>

  在后一語法格式中,prev元素包含的內容里面一般是setvar元素,該元素的含義前面已有介紹,這里不再重述,具體的用法隨后介紹。

  3.2.3 refresh任務

  refresh任務由refresh元素聲明,它用于刷新當前的卡片,對卡片內指定的變量進行更新。其語法格式為:

<refresh>
內容(context)
</refresh>

  其中包含的內容(content)中一般有setvar元素,其語法格式為<setvar name="name" value="value"/>,它可指定更新的變量名name,即更新的變量值value。另外,refresh元素也可以不包含setvar元素。而通過時間限制(timer元素)對卡片進行刷新。

  3.2.4 noop任務

  noop任務由noop元素進行聲明,表示什么也不做,是一個空操作,在替代卡片組級的do元素是十分有用。該元素是一個單獨的標簽,即 <noop/> 標簽。其語法格式如下:

<nnop/>

  noop元素沒有屬性,下面的簡單程序中就包含了noop元素實現得空任務操作:

<card id="card1">
<do type="options" name="dome">
<noop/>
</do>
...
</card>
3.3 時間及其元素

  WML提供了幾個元素,專門用于處理用戶瀏覽器的導航和事件。利用這些元素用戶可以給某任務制定關聯事件。那么當事件觸發時,瀏覽器就會執行相應的任務,比如URL導航就是通過事件實現的。而且,事件可以和一個需要完成的任務捆綁在一起。事件捆綁時一般是通過幾種元素及其標簽聲明來實現的,如go、do和onevent等元素。下面我們就講解WML的事件元素及事件。

  3.3.1 do元素

  do元素提供了一個通用的事件處理機制,使得用戶可以參與當前卡片的事件處理。通過<do>和</do>標簽將用戶交互和某一個任務聯系在一起。用戶交互可以是用戶按下的功能鍵、選擇的菜單項,也可以是用戶的聲音提示。當用戶激活這些交互功能時,用戶瀏覽器就會執行與do元素相關的任務。其語法格式如下:

<do type="type" label="label" name="name" optional="boolean">
任務(task)
</do>

  其中tast是與do元素關聯的動作,也是條件激活時瀏覽器即將執行的內容。在do元素中,用戶必須綁定且只能綁定go、prev、noop和refresh四種元素所實現任務中的一個任務(task)。go元素用于定位制定的URL地址,prev元素用于定位并打開前一操作或任務,doop為空操作,refresh用于刷新當前卡片組或任務,有關他們的詳細用法我們后面會陸續介紹。

  do元素可以用于卡片一級,也可用于卡片組一級。當用于卡片一級時,do元素必須包含在card元素中;而用于卡片組一級時,do元素必須包含在template元素中,由此定義的do元素將同時應用于當前卡片組的所有卡片。此時如果某個卡片不想應用模板中的do元素及其任務,則需采用我們前面介紹的方法,使用同名事件處理來替代模板中的do元素的事件處理。而且,不論事件關聯的任務是否相同,當do元素定義的事件名稱相同時,卡片的do元素將忽視卡片組一級do元素的影響,及卡片一組的do元素將被優先執行。

  另外,含有空操作任務的do元素,不論它是否被激活,它都不會傳送或顯示到用戶的瀏覽器中,這在一定程度上可以加快瀏覽器的工作效率,因為服務器端體它拋棄了一些空任務的判斷。 do元素各個屬性的功能及用法講解如下:

  1)type。用于指定do元素的類型(type),也即需要關聯、綁定的用戶交互事件,是必選屬性。用戶瀏覽器接到這些事件后,就會激活它們并執行相應的操作與處理。如果在一個卡片中定義了多個do元素并擁有同樣type,那么用戶必須為每個do指定不同的事件名才行,否則就會發生判斷混亂的錯誤。

  do元素典型的類型(type)及執行條件介紹如下:

  1、accept。當用戶選擇或按下相應功能鍵時(accept)、選項、命名或按鈕時,瀏覽器接收或激活當前所作選擇。

  2、prev。激活prev鍵時,瀏覽器將導航到歷史記錄中的前一個卡片。

  3、help。激活HELP功能鍵或相應按鈕、命名時,瀏覽器顯示與當前內容相關的幫助信息。

  4、reset。激活reset功能鍵或相應按鈕、命名時,清除或重置當前卡片組或瀏覽器的狀態。

  5、options。激活options功能鍵或相應按鈕、命名時,瀏覽器顯示與當前內容有關的選項或附加操作。

  6、delete。激活delete功能鍵或相應按鈕、命名時,刪除當前項目或選擇。

  7、unknown。如果給出的類型不能為do元素所識別,則一律按照unknown型處理,相當于類型為空,即type=""。

  8、vnd.*。vnd.*及其它不同大小寫組合[Vv][Nn][Dd].*。這種類型定義的都是vnd.cotype,用于激活供應商或用戶瀏覽器自定義的某個特定功能,其中co為公司(company)名的縮寫。

  9、X-*與X-*。擴展類型,目前WML中還沒有使用。

  2)label。該屬性指定的文本字符串可以表示用戶的交互事件。例如,當把某一個任務綁定在accept鍵上之后,并設置了label屬性,比如label="gone",那么瀏覽器就會將label的值“gome”顯示在屏幕上;如果不指定,瀏覽器則會顯示默認的“ok”字符串。為了保證能在較小的手機上顯示出來,label的屬性值最多不超過6個字符。不過這可能因WAP手機品牌、型號不同而稍有不同,有的手機最多不能超過5個字符。而且,如果手機瀏覽器不支持動態標簽顯示,那么它就會忽視labe


  l屬性。

  3)該屬性用于指定do元索所綁定事件的名稱。如果多個do元素制定了相同的name,那么他們綁定的事件統屬一個。如果卡片一般與卡片組一級中do元素制定了相同的事件名,那么卡片一級的時間將被優先執行,卡片組一級的事件將被忽視。

  WML規定,在同一卡片或在同一模板中,不得指定具有相同事件名(name)的兩個或兩個以上的do元素。

  另外,如果name屬性值為空,則相當于沒有指定name屬性,這時do元素執行的事件或操作由type的屬性值決定。

  4)optional。指定瀏覽器是否忽視do元素及其包含的任務。有兩個可選值:true和false。如果值為true,則瀏覽器將忽視當前do元素,即不執行它所綁定的任務。反之,若值為false,則執行do元素。

  3.3.2 ontimer事件

  ontimer用于指定一個事件。當<timer/> 標簽指定的時間到期后,瀏覽器就執行ontimer所指定的這個事件。ontimer的時間可以是一個URL地址,一個卡片組,一個WML網頁,一幅圖像或其他符合URL定位的規則的文件。<timer/>標簽指定的時間為正整數,單位大小為1/10秒。

  ontimer時間只能包含在card元素或template元素的標簽中進行定義,其語法形式如下:

<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事件只有一個屬性,即ontimer。它用于指定一個超鏈(href)的URL地址,指定時間timer過期的時候,用戶瀏覽器就會按照超鏈(href)的URL打開相應的卡片。

  3.3.3 onenterforward事件

  onenterforward事件僅當用戶使用go任務或類似于go任務的任務來定位和瀏覽卡片時才可發生。設置onenterforward事件后,當用戶進入當前卡片組時,瀏覽器就會定位onenterforward屬性或<go/>標簽中指定超鏈(href)的URL地址,并打開URL指定的卡片。

  onenterforward事件需要包含在card元素、template元素或onevent元素的標簽中進行定義,其語法格式為:

<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>

  前兩種格式中,onenterforward事件作為card元素或template元素標簽中的一個屬性進行定義的,該屬性即為onenterforward,它制定了一個超鏈(href)的URL地址,當用戶進入當前卡片時,瀏覽器就據此打開URL指定的卡片。這種格式制定的任務相當與go任務。

  3.3.4 onenterbackward事件

  當用戶使用prev任務或類似的任務來導航至某一卡片時,onenterbackward事件才可發生。換句話說,當用戶從歷史堆棧中選取URL地址,并通過瀏覽器打開這一地址對應的卡片時,onenterbackward事件才可能發生。

  與onenterforward事件類似,onenterbackward事件也需要包含在card元素、template元素或onevent元素的標簽中進行定義。其具體語法格式如下:

<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>

  前兩種格式中,onterbackward事件是作為card元素或template元素標簽中的一個屬性進行定義的,該屬性即為onterbackward,它指定了一個超鏈(href)的URL地址,當用戶使用prev等任務項回到地址時,瀏覽器就會打開URL指定的卡片。

  后一種格式中,onterbackward事件作為onevent元素的一給類型值,并結合<go/>標簽指定事件激活時瀏覽器需要打開的卡片的URL地址。

  3.3.5 onpick事件

  onpick事件在定義時一般通過onpick屬性指定一些項目,當用戶選擇或取消這些項目時,即可觸發onpick事件,執行onpick屬性所指定的項目,如打開卡片、卡片組或其他事件等。onpick事件通常在option元素的標簽中進行定義,其語法格式如下:

<option value="value" onpick="href">
內容(content)
</opiton>

  可以看出onpick時間作為option元素的一個屬性來定義具體的動作。這個屬性即onpick,它指定了事件觸發時瀏覽器需要定位的超鏈的URL地址。

  3.3.6 onevent元素

  onevent元素通過<onevent>和</onevent>標簽可以把包含的任務與特定的時間捆綁在一起。當用戶激活這一特定事件時,onevent元素所綁定的任務就會被立即執行。onevent元素的語法格式如下:

<onevent type="type">
任務(task)
</onevent>

  其中task是與onevent元素關聯的動作,也是條件激活時瀏覽器即將執行的內容。與do元素一樣,onevent元素中用戶也必須綁定且只能綁定go、prev、noop和refresh四種元素所實現任務中的一個任務,go元素用于定位指定URL地址、prev元素用于定位并打開前一操作或任務,noop為空操作,refresh用于刷新當前卡片組或任務。

  onevent元素只有一個屬性,即type屬性,它是必選屬性,主要用于定義特定事件的名稱。該屬性值的數據類型為CDATA型。

  3.3.7 postfield元素

  postfield元素用于指定當瀏覽器接到URL請求時,向原服務器(origin server)傳送的域名其域值。傳輸時,傳輸域及傳輸值的實際編碼方式主要依賴于瀏覽器與原服務器的通信方式。postfield元素是通過單獨?lt;postfield/>標簽進行定義的,其語法格式如下:

<postfield name="name" value="value">

  它共有兩個屬性:name與value,它們的取值均屬于VDATA型數據。其中,name屬性用于指定傳輸域的名稱,value屬性用于定義傳輸的值。這兩個屬性均為必選屬性。
3.4 變量設置元素與變量設置的有關規定

  幾乎所有的WML內容都可通過設置參數來實現,這為我們靈活的開發WML程序提供了方便。本節我們先介紹一個變量設置元素,然后再介紹與變量設置有關的一些具體規定。

  3.4.1 setvar元素

  setvar元素用于指定在當前上下文內容中的變量的值,從側面影響正在運行的任務。其語法格式如下: <setvar name="name" value="value"/>

  它有兩個屬性:name和value。前者用于指定變量的名稱,后者用于指定所需賦給變量的值。這兩個屬性都是必選的,它們的數據類型均屬于VDATA型。如果name屬性所規定的變量名不合法或不符合運行環境的要求,那么setvar元素在WML程序運行中將被忽視,不能發揮其應有的作用。

  3.4.2 變量設置

  WML編程中可以使用變量,變量使用前必須進行定義。變量的命名原則及定義方法我們上一章已經講過了,這里不再重述。在這里,我們主要介紹WML程序中設置變量的規定。

  如前所述,setvar元素可用來設置變量,設置時setvar元素一般需要在go、prev或refresh元素中進行定義。另外,利用input和select元素也可以設置變量。其中前者是將用戶輸入的文本賦給變量,作為變量的值;而后者則將用戶從option元素中選擇的value屬性的值賦給變量。有關input元素和select元素的語法格式及具體用法我們后面再行介紹。

  設置變量時,以下幾種情況還應當引起大家注意:

  1)可以使用WMLScript的變量值設置WML的變量,反之亦然。也就是說,使用WML及WMLScript編寫程序時,它們可以使用同名編程。

  2)在WAP開發工具中,通常提供有對變量進行管理和維護的選項卡或對話框,開發人員從中也可以對相應的變量進行設置及編輯。

  3)在當前上下文內容中,可以使用card元素的newcontext屬性來消除所有的變量值。

  3.5 用戶輸入處理元素

  通過WAP手機的按鍵,用戶可以向瀏覽器顯示的卡片中輸入數據信息或操作信息。WML為此專門提供了處理用戶輸入的元素。

  3.5.1 input元素

  input元素用于定義文本實體對象,包含有對輸入文本內容的格式、數據類型、長度、值、變量名等多種屬性的具體規定。當用戶輸入滿足input元素的規定時,則接收輸入信息,并賦給指定的變量靈活進行相應的操作、處理;否則,就通過瀏覽器給出具體的處理意見,并進行是單個輸入處理或變量初始化操作,比如刷新卡片以讓用戶重新輸入,或給用戶指出輸入錯誤所在并等待進一步的處理指令等。input元素是WML編程中處理用戶交互活動的重要元素,它通過單獨的<input/>標簽進行定義,其語法格式如下:

<input name="variable" title="label" type="type" value="value" default="default" format="specifier" emptyok="falsetrue" size="n" maxlength="n" tabindex="n"/>

  其中除了name屬性是必選的以外,其他屬性都是可選的。這些屬性的功能和用法介紹如下: 1)name。該屬性用于指定用來保存用戶輸入文本的變量和名稱。定義name屬性后WML將根據該屬性也即變量名,為即將輸入的文本實體對象與之存儲空間,以便接收用戶輸入。

  2)title。該屬性用于input元素的標簽,通常是位于輸入框前的提示信息。

  3)type。用于指定文本輸入區的類型,有text和passWord兩種選擇。默認值為text,指定的用戶可以輸入文本,而且輸入的文本會同時逐漸響應并顯示在瀏覽器中。如果選擇password,則指定用戶輸入的文本作為密碼文本處理,WML程序按文本實體接收輸入的數據,而瀏覽器上響應用戶輸入顯示時逐漸均為星號(*),由此起到保密的目的。

  4)value。該屬性用于指定name屬性所定義變量的值,它將顯示在輸入框中。

  5)default。該屬性用于指定name屬性所定義變量的默認值。

  6)format。該屬性用于格式化輸入的數據。

  7)maxlength。該屬性用于指定用戶可輸入字符串的最大長度。該屬性的上限為256,最多不能超過256個字符。

  8)emptyok。用于指定用戶是否可以不在輸入框內輸入內容。

  9)size。該屬性用于指定輸入框的寬度,寬度值為字符個數。

  10)tabindex。用于指定多個輸入框存在時,類似于HTML中Tab鍵的具體位置。

  3.5.2 select元素

  選擇列表屬于輸入元素,允許用戶從選項列表中選擇需要的項目。WML不僅支持單選列表,及單選項,而且支持多選列表,也就是復選項。select元素允許用戶從選列表中選擇所需的項目。列表中的選項采用后面我們就要講到的option元素進行定義,一般是一行格式化的文本。編程時,我們可以使用optgroup元素將option元素的情況項目分成不同級別或層次的選項組,為用戶選擇提供方便。

  select元素是通過<select>和</select>標簽進行定義的,語法格式如下:

<select title="label" multiple="falsetrue" name="variable" default="default" iname="index_var" ivalue="default" tabindex="n">
內容(content)
</select>

  其中所有屬性都是可選的。select元素各個屬性的功能和用法介紹如下:

  1)multiple。該屬性用于指定選擇列表是否可以使用復選框。

  2)name。該屬性用于指定接收選項值的變量的名稱,變量值由value屬性預設定。

  3)value。用于制定name屬性所定義變量的默認值。

  4)iname。用于指定包含排序號的變量的名稱。

  5)ivalue。用于指定選擇列表中被選中選項的值,是一個具有排序號性質的值。

  6)title。用于指定選擇列表的標題。

  7)tabindex。用于指定當前選擇光標在選擇列表中的具體位置,該位置即為當前選擇操作將要選擇的選項所在的位置。

  3.5.3 option元素

  option元素用于定義select元素中的一組單選項。它通過<option>和</option>標簽進行定義,并可包括事件和單選項的顯示文本等信息,其語法格式如下:

<option title="label" value="value" onpick="href">
內容(content)
</option>

  option元素的屬性均為可選,各屬性功能及用法說明如下:

  1)value。該屬性用于設置鍵值。當用戶選到該選項之后,option元素就會將該值賦給selet元素的name屬性所指定的變量。

  2)title。用于option元素制定的一個標題,以便提示用戶操作。

  3)onpick。該屬性用于指定用戶選到該項并按accept鍵后所打開卡片組的L。

  3.5.4 optgroup元素

  optgroup元素用于將多個相關的option元素進行分組,用戶瀏覽器可以借助這種分組來安排選項列表的顯示布局,以方便用戶選擇。optgroup元素是通過<optgroup>和</optgroup>標簽進行定義的,其語法格式如下:

<optgroup title="label">
內容(content)
</optgroup>

  它所包含的內容中需要包含至少一次option元素或其他的optgroup元素。

  optgroup元素只有一個屬性,即title屬性,用于定義optgroup元素的標題,以便提示用戶操作。

  3.5.5 fieldset元素

  fieldset元素用于設定輸入框和相應的說明文本,從而用戶就可以利用input元素等借助該輸入框輸入所需的數據信息。fieldset元素的語法格式如下:

<fieldset title="label">
內容(content)
</fieldset>

  由于fieldset元素和輸入有關,所以它們的內容中可以包含與輸入有關的其他元素。 其語法格式可以看出,fieldset元素只有一個屬性,即title屬性,用于定義fieldset元素的標題,以便提示用戶操作。
3.6 錨、圖像、定時器及其元素

  本節我們講解與定位和定時控制有關的3類元素,包括anchor、a、img、timer幾種元素。使用它們可以在WML卡片中創建超鏈接,或在文本流中顯示一幅圖像,或設置定時器來控制用戶操作及卡片顯示等。

  3.6.1 anchor元素

  anchor元素用于創建一個超鏈接的頭部,超鏈接的其余部分為用戶指定的URL地址。當程序運行中用戶選中該超鏈接時,瀏覽器就會被引入到超連接指定的地址,如其他卡片組或同一卡片組中的其他卡片。

  anchor元素由<anchor>和</anchor>標簽進行定義,它所包含的超連接必須是真實存在的,而且是能夠正確連接的超連接。anchor元素定位超鏈接時,必須通過相關的任務元素完成定位處理,如go元素、prev元素、refresh元素等。不過,在anchor元素中只能包含1個定位任務,多于一個時會導致WML運行錯誤。

  anchor元素的語法格式如下:

<anchor title="label">
任務
文本
</anchor>

  其中的任務需要包含一個進行定位的任務元素。可以看到,anchor元素只有一個屬性,即title屬性,用于定義fieldset元素的標題,它用于定義即title屬性,用于定義fieldset元素的標題,以便提示用戶操作。元素的超連接的標題。用戶瀏覽時可利用這一標題來及時了解操作的超連接的名稱或者有關提示信息。

  3.6.2 a元素

  a元素是由anchor元素的簡化形式,它內含了anchor元素需要包含的go元素功能愛完成超連接定位,并且不再包含其他任何變量設置。它使用<a>和</a>標簽進行定義。

  3.6.3 img元素

  img元素用于格式化的文本中防止和顯示一幅圖像。當然,前提是用戶所用的瀏覽器必須支持圖像顯示。img元素由單獨的<img/>標簽進行定義,它不包含其它元素。其語法格式如下:

<img alt="text" src="url" localsrc="icon" aligh="alignment" height="n" width="n" vspace="n" hspace="n"/>

  屬性中alt和src是必須要有的,其他可選。另外,需要注意的是img元素要放在p元素里,而不能放在do或option元素里。

  img元素各個屬性的功能和用法介紹如下:

  1)alt。該屬性用來指定當手機不支持圖像顯示用來替代現實的文字文本。

  2)src。該屬性用于指定圖像文件的URL地址。

  3)localscr。該屬性用來指定顯示存在手機ROM的圖標文件。

  4)align。該屬性用來指定圖像顯示是相對當前文本行的對齊方式。

  5)height。用于設定圖像顯示時的高度。

  6)width。與height屬性類似,用于設定圖像顯示時的寬度或寬度百分比。

  7)vspace。該屬性用于指定圖像顯示時的上邊距和下邊距,默認值為0。

  8)hspace。與vspace屬性類似,該屬性用于指定圖像顯示時的左邊距和右邊距。

  3.6.4 timer元素

  timer元素用于設定一個定時器,可以延時顯示卡片組、卡片,或實現WML程序的等待操作,或在卡片組和卡片之間實現切換以取得動畫效果。

  一個卡片只能使用一次timer元素,也即是說只能設置一個定時器。當用戶進入還有定時器的卡片時,定時器就會開始工作,其時間值就會逐漸減小。timer元素指定的時間值單位1/10秒。其語法格式如下:

<timer name="variable" value="value"/>

  它的兩個屬性中,value屬性是必選的,name屬性為可選。name屬性用于指定表示時間值的變量的名稱,該變量的取值由定時器的時間值決定,時間值減小,該變量的值也相應地減小,并終始保持不變。

  value屬性用于指定name屬性所定義變量的初始值。如果name屬性定義的變量在定時器初始化時還沒有值,那么該變量就將采用value屬性指定的值;否則,改變量就會忽視value屬性的值。如果沒有定義name屬性,也就是說,沒有指定時間變量,那么timer元素指定的定時器仍將采用value屬性的值進行延時處理。

  3.7 文本格式化及其元素


  WML程序中,為使顯示的文本呈現出豐富的樣式,WML提供了一些用于格式化的元素,我們通過這些元素及其相應的標簽可以對文本進行標注和控制,從而實現不同的顯示效果。

  3.7.1 增強元素

  增強元素都是一些成對的標簽,用于指定文本的增強顯示信息。比如b元素通過<b></b>標簽可以控制其中的文本按照粗體字進行顯示。

  3.7.2 br元素

  “br”即break,是用于換行的元素,它是使用單獨的
標簽進行定義的。br元素的作用相當于插入一個回車符。


  3.7.3 p元素

  “p”即指paragraph,p元素用于劃分段落,是當前文本換行并插入一個空白行。p元素可以使用單獨的<p/>標簽進行定義,也可以使用<p>和</p>標簽成對的進行定義。其語法格式為:

<p aligh="alignment" mode="wrapmode"/>

  或

<p aligh="alignment" mode="wrapmode"/>
文本
</p>

  1)align。該屬性用于設置段落在瀏覽器中的對齊方式,有left、center和righ三種取值。這三種參數值分別表示p元素當前定義的文本段落及瀏覽器窗口的左側、中間和右側進行對齊。默認值為left,及段落與瀏覽器窗口的左側對齊排列。

  2)mode。該屬性用于指定下一段落的換行方式。

  3.7.4 td元素

  td元素用于規定表格單元格的內容。其語法格式如下:

<td> 單元格內容 </td>

  3.7.5 tr元素

  WML中的表格是按照行、列進行組織的。一個表格由若干行組成,每行由若干列組成。tr元素用于定義表格的行。其語法格式如下:

<tr> 單元格內容 </td>
</tr>

  3.7.6 table元素

  table元素與tr元素、td元素一起,可用來創建能容納文本和圖像的表格,并可設置表格各列中文本和圖像的對齊方式。其語法格式如下:

<table align="alignment" title="label" columns="n">

  或

<table align="alignment" title="label" columns="n">
內容
</table>

  其中各個屬性的功能和用法介紹如下:

  1)align。該屬性用于指定表各個列中文本和圖像的對齊方式。

  2)title。該屬性用于指定table元素的標題。

  3)columns.該屬性用于指定表格的列數,該數不能為0

(出處:http://www.companysz.com)



上一篇:JavaServer Faces 概述

下一篇:MIDlet 部署

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 涩涩激情网 | av免费大全| 久久国产精品影视 | 久久蜜臀一区二区三区av | 久久国产精品久久精品国产演员表 | 老女人碰碰在线碰碰视频 | 精品一区二区久久久久久久网精 | 日韩精品中文字幕一区 | 久久久久国产成人精品亚洲午夜 | 黄色av网站在线观看 | 美女视频黄视大全视频免费网址 | 国产精品美女一区二区 | 男女羞羞视频在线免费观看 | 水多视频在线观看 | xxxx69hd一hd| 国产九色在线播放九色 | 午夜伊人 | 久久精品之 | 在线无码| 国产成人午夜高潮毛片 | 免费a级黄色片 | 免费毛片随便看 | 草操视频 | 91网在线播放 | 久久久成人精品 | 一区二区三区日韩在线 | 午夜生活理论片 | 黄色网址入口 | 极品美女一级毛片 | 中文字幕精品在线视频 | 在线中文日韩 | 久久精品a一级国产免视看成人 | 成人免费自拍视频 | 爱爱视频天天干 | 巨乳激情| 成人区一区二区 | 国产精品av久久久久久无 | 欧美性受xxxx人人本视频 | 亚洲国产午夜精品 | 毛片在线视频免费观看 | 久久精品视频在线看99 |