posts - 22,comments - 35,trackbacks - 0

          學(xué)習(xí)自然語言的最好方法就是溶入相應(yīng)的語言環(huán)境在交流中學(xué)習(xí),學(xué)習(xí)一種編程語言的最好方法就是看例程。為了幫助大家建立WML應(yīng)用的第一印象,所以請(qǐng)大家先看第一個(gè)例子:

          <?xml version="1.0"?>
          <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
          "http://www.wapforum.org/DTD/wml_1.1.xml">
          <wml>
            <template>
              <do type="prev" label="back">
                <prev/>
                <!--provide a button you can clink to back a step-->
              </do>
            </template>
          <card id="friends" title="Hot link">
            <p>
              <a >Sina WAP</a><br/>
              <a href="#nextcard">Next Card</a>
            </p>
          </card>
          <card id="nextcard">
            <p>
             this is the second card.
            </p>
          </card>
          </wml>

          通過以上示例大家應(yīng)該了解到以下內(nèi)容:

          1、語法:WML的語法與HTML相似,仍然是一種標(biāo)記語言,而且延續(xù)了xML語法規(guī)則

          2、元素:在XML和WML 語言中,語言的基本元素稱之為"標(biāo)簽"
             標(biāo)簽必須被 < 和 > 括起來。
             大多數(shù)標(biāo)簽都包括"起""止"兩部分,例如:<p>…</p>
             某些特殊標(biāo)簽可以只有一個(gè)標(biāo)簽,但是必須有結(jié)束標(biāo)記,例如:<prev/>

          3、屬性:XML語言的標(biāo)簽可以包含很多屬性,給標(biāo)簽提供必要的附加信息
             屬性內(nèi)容通常在起始標(biāo)簽內(nèi)使用
             屬性只作為參數(shù)為標(biāo)簽提供必要的信息,不會(huì)被瀏覽器顯示
             屬性的值需要被引號(hào)括起來,可以是單引號(hào)或者雙引號(hào),引號(hào)可以成對(duì)嵌套使用
             例如:<card id="friends" title="Hot link">

          4、注釋
             注釋內(nèi)容是方便制作者閱讀源代碼,不會(huì)被瀏覽器顯示
             WML不支持注釋嵌套
             例如:<!-- This is a comment. -->

          5、文檔結(jié)構(gòu)
             WML文檔是由Card和Deck構(gòu)成的,一個(gè)Deck是一個(gè)或多個(gè)Card的集合。在得到客戶終端的請(qǐng)求之后,WML從網(wǎng)絡(luò)上把Deck發(fā)送到客戶的瀏覽器,訪問者可以瀏覽Deck內(nèi)包含的所有Card,而不必從網(wǎng)上單獨(dú)下載每一個(gè)Card。

          其他一些示例中沒有涉及到的基本內(nèi)容:

          6、大小寫敏感
             無論是標(biāo)簽元素還是屬性內(nèi)容都是大小寫敏感的,這一點(diǎn)繼承了XML的嚴(yán)格特性,任何大小寫錯(cuò)誤都可能導(dǎo)致訪問錯(cuò)誤,這是WML制作者必須注意的問題。

          7、躲避語法檢查的方法-CDATA
             CDATA內(nèi)的數(shù)據(jù)內(nèi)容都會(huì)被當(dāng)作文本來處理,從而避開語法檢查,直接作為文本顯示。
             示例:
             < ! [ CDATA [ this ia <b> a test ] ] >
             顯示結(jié)果為
             this ia <b> a test

          8、定義變量
             WML可以使用變量供瀏覽器和Script使用,通過在Deck中的一個(gè)Card上設(shè)置變量,其他Card不必重新設(shè)置就可以直接調(diào)用。

            變量的語法如下:
             $identifier
             $(identifier)
             $(identifier:conversion)

            如果變量內(nèi)容包含空格就需要用圓括號(hào)括起來。由于變量在語法中有最高的優(yōu)先級(jí),包含變量聲明字符的字符串會(huì)被當(dāng)作變量對(duì)待,所以如果要顯示$,就一定要連續(xù)使用兩個(gè)$。

            示例:
             <p> Your account has $$15.00 in it.</p>
             顯示結(jié)果為:Your account has $15.00 in it

            XML是一種語法非常嚴(yán)格的語言,WML也繼承了這種規(guī)則,任何地不規(guī)范語法都會(huì)導(dǎo)致錯(cuò)誤。


          WML文件的概念WML Decks

          這里簡單介紹一個(gè)關(guān)于WML文件的概念,其他的細(xì)節(jié)問題會(huì)在后面的章節(jié)還詳細(xì)介紹。

          聲明
          由于WML語言繼承于XML,所以一個(gè)有效的WML文檔必須包含一個(gè)XML聲明和一個(gè)文件類型聲明。

          以下就是一個(gè)最常用的聲明,由于WML語法要求非常嚴(yán)格,為了避免出錯(cuò),制作者可以直接拷貝粘貼到制作文檔。

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

          注:<?xml version="1.0"?> 語句必須出現(xiàn)在一個(gè)Deck的首行,而且必須頂頭寫,插入任何字符哪怕是空格都會(huì)造成語法錯(cuò)誤。

          主體結(jié)構(gòu)
          這是一個(gè)最簡單的WML文件:

          <?xml version="1.0"?>
          <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
          "http://www.wapforum.com/DTD/wml_1.1.xml">
          <wml>
          <card title="sample">
          <p>Hello WAP!</p>
          </card>
          </wml>


          任務(wù)與導(dǎo)航-賦值與數(shù)據(jù)交換

          這一部分簡單講解WML的變量賦值和數(shù)據(jù)提交方法,在后面的章節(jié)中有專門講解。

          變量賦值(Setvar)
             Setvar給瀏覽器的當(dāng)前頁面內(nèi)變量賦值,該變量可以在當(dāng)前Dock中的任意Card中調(diào)用。

            相關(guān)屬性:

            1. name 變量名,作為訪問變量的標(biāo)識(shí)

              示例:<setvar name=$bogus value=$bear>

            2. value變量的值

          數(shù)據(jù)交換(Postfield)
             Postfield通過URL申請(qǐng)與CGI交換數(shù)據(jù)。

            相關(guān)屬性:

            name & value 交換參數(shù)用的變量的名字和值。

            示例:<postfield name=$bogus value=$bear>

          一個(gè)綜合應(yīng)用的例子

          示例:

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

          <card id="Start" title="Sina WAP">
          <do type="accept">
             <setvar name="MyCGI" value="/cgi-bin/count.pl">
             <go href="$MyCGI" method="post">
               <postfield name="one" value="one one"/>
               <postfield name="two" value="two two"/>
             </go>
            </do>
          <p>Hello World!</p>
          </card>
          </wml>

          上例相當(dāng)于產(chǎn)生一個(gè)count.pl?one="one one"&two="two two"的Post申請(qǐng)。


          跳轉(zhuǎn)和傳遞參數(shù)

          go的基本屬性和應(yīng)用
          實(shí)現(xiàn)Card之間跳轉(zhuǎn)的一個(gè)基本方法是go,go和do、anchor等標(biāo)簽的結(jié)合是WML高級(jí)應(yīng)用的一個(gè)基礎(chǔ)。

            相關(guān)屬性:

            href:聲明鏈接的URL

            sendreferer:表示是否傳遞調(diào)用href所指定的URL的頁面的URL,也就是當(dāng)前頁的URL,即HTTP頭中的HTTP_REFERER,默認(rèn)值為false,可選值為true

            method:WML的method與HTTP提交表單的方法類似,同樣有Post和Get兩種,缺省參數(shù)為Get。

            Post與Get的不同:Post在發(fā)送前要進(jìn)行編碼處理,然后分組發(fā)送,發(fā)送過程相對(duì)安全,適合大數(shù)據(jù)量的處理;而Get方法不進(jìn)行任何處理,一次性發(fā)出,適合小數(shù)據(jù)量交換。除非你肯定你提交的數(shù)據(jù)可以一次性提交,否則請(qǐng)盡量用Post方法。

            accept-charset:定義瀏覽器與服務(wù)器之間收發(fā)信息的字符集類型,例如:accept-charset="UTF-8,US-ASCII,ISO-8859-1"。

          示例:

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

          <card id="Start">
             <do type="accept" label="next">
               <go href="#nextCard"/>
             </do>
          <p>This is the First Card!</p>
          </card>

          <card id="nextCard">
             <do type="prev" label="before">
               <prev/>
             </do>
          <p>This is the last card!</p>
          </card>
          </wml>

          Go結(jié)合Postfield交換參數(shù)
          標(biāo)簽Go可以包含一個(gè)或多個(gè)Postfield標(biāo)簽,用這些標(biāo)簽攜帶參數(shù)與服務(wù)器進(jìn)行數(shù)據(jù)交換。

          示例1:產(chǎn)生一個(gè)"quote.pl?stock=00001"Get申請(qǐng)

          <go href="/cgi-bin/quote.pl">
             <postfield name="stock" value="00001"/>
          </go>

          示例2:產(chǎn)生一個(gè)"stockname=證券&page=1"Post申請(qǐng)

          <go href="/cgi-bin/query.pl" method="post">
             <postfield name="stockname" value="證券"/>
             <postfield name="page" value="1"/>
          </go>


          ?

          任務(wù)和任務(wù)屏蔽

          內(nèi)部任務(wù)
             返回<prev>

            用來將當(dāng)前頁面的URL壓入U(xiǎn)RL歷史堆棧,并打開此前的URL,若該URL不存在,則<prev>無效。語法類似<go>,<prev>和</prev>之間可加入一句或多句<setvar name="name" value="value"/>,若不加,則必須以<prev/>的形式出現(xiàn)。

            刷新<refresh>

            用來刷新當(dāng)前的頁面,從而使得頁面內(nèi)的變量刷新或置空,語法與prev相同。<refresh> <setvar name="name" value="value"/> </refresh>,或<refresh/>。

            無動(dòng)作<noop>

            表示什么也不做,該標(biāo)簽不能用在<anchor>中,一般用在覆蓋DECK級(jí)的<do>。

          任務(wù)屏蔽(Task Shadowing)
             WML的Task有兩個(gè)級(jí)別,Deck級(jí)和Card級(jí)。通常人們還習(xí)慣把設(shè)置在某些條件中的任務(wù)成為第三級(jí),在這里先不討論,后面有專門的描述。

            Deck Level:把通用的Task設(shè)置在template中,這個(gè)Deck中所有的Card都自動(dòng)繼承并使用這些task。

            Card Level:只在當(dāng)前的Card中有效,并替換掉Deck Level的相同屬性的Task。

          示例:

          <wml>
             <template>
               <do type="options" name="general" label="Back">
                 <prev/>
               </do>
             </template>
          <!-- a deck level task-->

          <card id="Card1">
             <p>Hello , this is a test <br/>
               <a href="#card2">the second</a>
             <p>
          </card>

          <card id="Card2">
          <!-- This Card override the deck level task by noop -->
          <do name="general" type="options" label="none">
             <noop/>
          </do>
          <p>nothing happend here</p>
          </card>
          </wml>


          動(dòng)作和鏈接

          設(shè)置動(dòng)作(Do)
          Do是WML語言中最有有價(jià)值的元素之一,它給用戶提供一種在當(dāng)前Card上進(jìn)行"動(dòng)作"的通用方法。這種動(dòng)作通常被定位在用戶終端界面的特定部件上,例如WAP手機(jī)的功能鍵(Cancel,Option,Accept),特定的圖標(biāo),語音識(shí)別功能等等。Do可以設(shè)置在Deck的Template上或者Card上,當(dāng)他們重名的時(shí)候Card上的Do會(huì)覆蓋Template上的同名元素(參看任務(wù)屏蔽說明)。

          屬性列表:

          type:訴瀏覽器動(dòng)作的意圖。
             WML總共聲明了9個(gè)類型的動(dòng)作,最常用的動(dòng)作類型是"accept"和"option"。
             1.1 accept,接受、確認(rèn)
             1.2 prev,返回上一個(gè)歷史堆棧中的URL
             1.3 help,請(qǐng)求幫助
             1.4 reset,清除或者重置狀態(tài)
             1.5 options,根據(jù)當(dāng)前頁面的功能設(shè)置選項(xiàng)。
             1.6 delete,刪除選擇條目
             1.7 unknow,相當(dāng)于空白字串
             1.8 還有兩個(gè)屬性還沒有最后確定。

          label:設(shè)置按鈕標(biāo)題,顯示在瀏覽器定義好的屏幕位置,不同瀏覽器地顯示位置不同。如果不設(shè)置標(biāo)題,按鈕會(huì)按照瀏覽器的缺省格式顯示,不同瀏覽器的缺省格式不同。

          name:按鈕名稱,可以用Card級(jí)的動(dòng)作覆蓋template上的同名動(dòng)作,重新賦予那些動(dòng)作新的任務(wù)。

          optional:來定義一個(gè)按鈕是否顯示,設(shè)置為True時(shí)會(huì)被瀏覽器忽略

          示例:

          <do type="accept" label="Accept" name="accept1" optional="false">

             {Content}

          </do>

          鏈接(Anchor)
          archor是WML定義鏈接的基礎(chǔ)方式,與其他標(biāo)簽結(jié)合可以滿足很多應(yīng)用,anchor必須與go結(jié)合。

          相關(guān)屬性:

          title 鏈接的文本顯示內(nèi)容。

          示例:

          <anchor title="Click"> click me <go href="#clickedMe"/> </anchor>

          簡化的鏈接形式(a)
          a是anchor的簡化形式,不需要Go語句配合。為了提高效率,推薦使用<a>。

          相關(guān)屬性:

          1. href 超級(jí)鏈接的目標(biāo)Url

          示例:

          <a href="#clickedMe">click me</a>


          ?

          WML的事件

          內(nèi)部事件(Onevent)
          相關(guān)屬性:

          type:內(nèi)部事件的觸發(fā)條件,當(dāng)前瀏覽器狀態(tài)滿足觸發(fā)條件時(shí),瀏覽器就會(huì)觸發(fā)這個(gè)條件下設(shè)置的Task,內(nèi)部事件總共有4種觸發(fā)條件。

            1 ontimer 滿足時(shí)鐘設(shè)置的條件時(shí),該條件成立。關(guān)于時(shí)鐘設(shè)置問題,后面還有專門的說明。
             2 onenterbackward 通過Prev或其他外部命令返回到當(dāng)前Card,該條件成立。
             3 onenterforward 當(dāng)瀏覽器通過鏈接進(jìn)入當(dāng)前Card,該條件成立
             4 onpick 在使用Option控件列表的時(shí)候,任何點(diǎn)擊控件的行為都會(huì)觸發(fā)本事件,包括選擇和去掉選擇。

          示例:

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

          <!-- this deck can't use in Ericsson r320sc ,because r320sc haven't accept button-->

          <card id="start">
          <do type="accept" label="next">
             <go href="#two"/>
          </do>
          <p>This is the first card.</p>
          </card>

          <card id="two">
          <do type="accept" label="next">
             <go href="#three"/>
          </do>
          <onevent type="onenterbackward">
             <go href="#temp"/>
          </onevent>
          <p>This is the second card.</p>
          </card>

          <card id="three">
          <do type="accept" label="back">
             <prev/>
          </do>
          <p>This is the thired card.</p>
          </card>

          <card id="temp">
          <do type="accept" label="start">
             <go href="#first"/>
          </do>
          <p>haha, you are lost!</p>
          </wml>


          WML文檔結(jié)構(gòu)祥解

          1、聲明(Prologue)
          <?xml version="1.0"?>
          <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.com/DTD/wml_1.1.xml">

          2、元素(Element)
             WML首先定義一個(gè)Deck,然后在Deck內(nèi)封裝信息和Card。

          3、文件頭(Head Element)
             頭信息包含與Deck有關(guān)的信息,包括meta數(shù)據(jù)和控制元素。

            3.1、訪問權(quán)限設(shè)置(Access)

            該元素用于設(shè)置有訪問當(dāng)前Deck權(quán)限的列表。如果Deck內(nèi)不包含Access Element信息,該Deck下的Access Element處于無效狀態(tài),其他所有的Deck都可以訪問該Deck。

            相關(guān)屬性:

            domain:假如設(shè)置 <access domain="sina.com.cn"/> 那么 http://www.sina.com.cn/ 將有訪問權(quán)限, 而 http://www.sino.com.cn/ 和 http://www.sina.net.cn/ 就沒有.

            path:工作原理與Domain非常相似,例如設(shè)置<access path="/internal"/> 那么"/internal/wml" 將獲得訪問權(quán)限,而"/internal-wml"就沒有。

          示例:

            做如下設(shè)置 <access domain="sina.com.cn" path="/wap"/>

            那么以下幾個(gè)Url具有訪問權(quán)限:

            http://www.sina.com.cn/wap/goto.cgi
             http://www.sina.com.cn/wap/index.wml
             http://www.sina.com.cn/wap/cgi-bin/create_report.cgi?name=123&pwd=234

            以下的幾個(gè)Url沒有訪問權(quán)限:

            http://www.sina.com/wap/getuid.cgi
             http://www.sina.com.cn/internal/wap/getuid.cgi

          3.2、頭元素設(shè)置(Meta)

            <meta 屬性 content="值" scheme="格式" forua="true|false"/>和HTML中的類似,提供了該DECK的meta信息。

          例如:<meta http-equiv="Cache-Control" content="max-age=0" forua="true"/>

            content屬性是必選的,其內(nèi)容根據(jù)屬性而定。scheme屬性目前尚不支持。forua為可選屬性,指定在該wml文件傳到客戶端之前,<meta>標(biāo)簽是不是被中間代理刪除(因?yàn)閭鬏數(shù)膮f(xié)議可能改變),默認(rèn)值為false。

            目前支持的meta數(shù)據(jù):

            <meta http-equiv="Cache-Control" content="max-age=0"/>指定DECK在手機(jī)內(nèi)存緩存中的存儲(chǔ)時(shí)間段,默認(rèn)的為30天(除非內(nèi)存耗盡),在該期間,手機(jī)對(duì)于訪問過的DECK直接從緩存里調(diào)用。如果信息是對(duì)時(shí)間敏感的,可以用max-age指定DECK在緩存里的生存期,最小單位是秒,如果指定為0,則每次都需通過連接服務(wù)器來調(diào)用該DECK。

            <meta user-agent="vnd.up.markable" content="false"/>和<meta user-agent="vnd.up.bookmark" content="指定的URL"/>類似于普通瀏覽器的書簽功能。當(dāng)用戶將一個(gè)CARD做了書簽后,手機(jī)瀏覽器首先用一個(gè)標(biāo)記記錄該CARD,這個(gè)標(biāo)記默認(rèn)的是<card>標(biāo)簽中的title屬性(以后會(huì)講到),然后當(dāng)用戶選擇了該書簽以后,瀏覽器就會(huì)打開被記錄的URL。但是因?yàn)樵谀J(rèn)的情況下,手機(jī)會(huì)記錄所有的DECK,所以,一般<meta>被用來使手機(jī)不要記錄當(dāng)前的URL,即<meta user-agent="vnd.up.markable" content="false"/>。此外,如果要為書簽指定不同于當(dāng)前DRECk的URL,用<meta user-agent="vnd.up.bookmark" content="指定的URL"/>。

          4、模板(Template)
             為了節(jié)省資源,可以把每個(gè)Card中都要用到的Task設(shè)置在模板中,供當(dāng)前Deck中所有Card使用,加入個(gè)別Card不需要該模板內(nèi)容,可以O(shè)verride掉它(詳見任務(wù)屏蔽)。

          5、卡片(Card)
             適用事件

            以下事件適用于Card和Template,參見前面的相關(guān)說明。
             1. onenterbackward
             2. onenterforward
             3. ontimer

            卡片屬性(Card)

            id:同一Deck內(nèi)Card的唯一標(biāo)識(shí),可以作為標(biāo)簽被使用。(#nextcard).

            title:卡片標(biāo)題。不同的瀏覽器處理標(biāo)題處理title的原則不一樣,有的瀏覽器會(huì)顯示標(biāo)題,如果當(dāng)前卡片沒有設(shè)置標(biāo)題,當(dāng)前卡片的URL會(huì)被顯示在標(biāo)題位置。有些瀏覽器為了節(jié)省顯示區(qū)域會(huì)忽略標(biāo)題。

            newcontext:默認(rèn)值為false,用來指示當(dāng)跳轉(zhuǎn)到本CARD時(shí),手機(jī)是不是要清除以前保留的信息,包括變量,堆棧里的歷史記錄,重新設(shè)置手機(jī)狀態(tài)等。

            ordered 布爾變量,聲明Card是否有序。通??梢杂脕黹_發(fā)自動(dòng)播放的幻燈片效果。

          示例:

          <?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 domain="sina.com.cn" path="/wap"/>
          </head>

          <template>
             <do type="accept" name="accept1" label="OK">
               <go href="#accept"/>
          </do>
          </template>

          <card id="start" title="Start Here">
          <p> Start Here. </p>
          </card>

          <card id="accept" title="Okay Card">
          <do type="accept" name="accept1" label="Okay">
             <go href="#accept2"/>
          <!-- override the same task in template-->
          </do>
          <p> Card Accept </p>
          </card>

          <card id="accept2" title="OK Card" >
          <do type="accept" >
             <go href="#start" />
          </do>
          <p> Card Accept2 </p>
          </card>

          </wml>



          Select List 控件

          對(duì)表單的控制能力可以證明一個(gè)HTML設(shè)計(jì)者是否夠?qū)I(yè),而且很多交互功能也必須依賴表單。WML沒有表單屬性,但是WML可以直接使用控件,同樣可以達(dá)到使用表單的效果。因此,使用控件的水平可以體現(xiàn)一個(gè)WML設(shè)計(jì)者的制作水平。

          WML控件有Select List和Input Box兩個(gè)系列,每個(gè)系列另外包含幾個(gè)子系列,基本可以滿足表單設(shè)計(jì)的需求。

          選擇列表控件(Select List)

          Select有兩對(duì)很重要也很容易混淆的屬性:name, value , iname , ivalue。這四個(gè)屬性的區(qū)別和用途不太容易描述清除,看了后面的例子會(huì)很容易理解。

          每個(gè)Select是一個(gè)或多個(gè)Option的集合,Option地結(jié)果返回給Select元素的name和iname。

          示例:

          <select name="name" iname="iname value="value" ivalue="ivalue">
          <option value="S">sina</option>
          <option value="Y">yahoo</option>
          </select>

          相關(guān)屬性:

          1. multiple 這個(gè)布爾變量的值決定是否允許多重選擇,值為True時(shí)Select控件允許復(fù)選,否則相反。

          2. name & Value 這一組變量的主要作用是獲取于該option的返回值,value提供name的缺省值。

          3. iname & ivalue 與上一組參數(shù)功能相似,不同的是ivalue返回有效Option的序列號(hào)。被選中的控件用它的序號(hào)表示,0代表沒有option被選中,假如第二個(gè)和第三個(gè)同時(shí)被選中就表示為 2;3

          4. title 作為標(biāo)題參數(shù)提供給瀏覽器,但是不同的瀏覽器處理方式有所不同,有些瀏覽器直接顯示選項(xiàng)內(nèi)容不顯示標(biāo)題,有的瀏覽器顯示標(biāo)題,按選擇鍵進(jìn)入選擇界面。

          5. tabindex 提供給瀏覽器的控件序號(hào)參數(shù)。

          2、選項(xiàng)控件

          Option只有包含在Select內(nèi)才有意義,無法單獨(dú)使用。

          相關(guān)屬性:

          1. value Option的返回值,假如當(dāng)前Option被選擇,這個(gè)Value的值會(huì)被傳送到Select元素的Name變量。

          2. title 供瀏覽器顯示的選項(xiàng)標(biāo)題。

          3. onpick 如果當(dāng)前Option被點(diǎn)選,瀏覽器跳轉(zhuǎn)到指定的Url。

          示例1:

          <card>
          <p>Please choice your favourite Web.<br/>
          <select name="X">
          <option value="S">sina</option>
          <option value="Y">yahoo</option>
          </select>
          <p>
          </card>

          上例是一個(gè)基本的單選列表,選擇的結(jié)果被賦值給X。

          示例2:

          <card>
          <p>Please choice all your favourite Web.<br/>
          <select name="X" iname="I" ivalue="1;3" multiple="true">
          <option value="S">sina</option>
          <option value="Y">yahoo</option>
          <option value="N">netease</option>
          </select>
          <p>
          </card>

          上例是一個(gè)使用了iname和ivalue的多選列表,I被預(yù)置為 1;3 。假如用戶選擇了sina和yahoo,X被賦值為 S;Y,I被賦值為 1;2。假如用戶不做任何選擇,I等于1;3,X內(nèi)容為空。

          示例3:

          <card>
          <p>Jump to your favourite Web.<br/>
          <select>
          <option onpick="http://wap.sina.com.cn">sina</option>
          <option onpick="http://wap.chnmobile.net">china mobile</option>
          </select>
          <p>
          </card>

          上例演示了Option的onpick功能,不管Option的狀態(tài)如何,只要它被點(diǎn)選,瀏覽器就會(huì)跳轉(zhuǎn)到指定的Url。

          示例四:

          <card>
          <p>Please choice your favourite Web.<br/>
          <select name="X">
          <option value="S">sina</option>
          <option value="Y">yahoo</option>
          <option value="S;Y">both</option>
          </select>
          <p>
          </card>

          上例演示了一個(gè)通過單選功能完成多選需求的示例。



          分組選擇控件(Optgroup)和復(fù)雜實(shí)例

          相關(guān)Option分組產(chǎn)生層級(jí),對(duì)最終用戶來說可能沒有什么意義,但是對(duì)于制作者來說,Option分組可以提供很多方便。

          相關(guān)屬性:

          1. title 標(biāo)題,通常這種標(biāo)題無法被顯示

          示例:

          <card>
          <p> What OS You Use Now?
            <select name="OS">
             <optgroup title="microsoft">
              <option value="dos">dos</option>
              <option value="windows">windows</option>
             </optgroup>
             <optgroup title="others">
              <option value="unix">unix</option>
              <option value="linux">linux</option>
             </optgroup>
            </select>
          </p>
          </card>

          上例演示了一個(gè)基本的Optgroup元素的應(yīng)用,由于Optgroup沒有變量參數(shù),所以只能提供有限的應(yīng)用。

          一個(gè)比較復(fù)雜的例子:

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

          <template>
             <do type="options" label="Back">
               <prev/>
             </do>
          </template>

          <card id="lists">
          <p>
          <select title="Pick Lists">
             <option onpick="#JY">Jin Yong</option>
             <option onpick="#GL">Gu Long</option>
          </select>
          </p>
          </card>

          <card id="JY">
          <onevent type="onenterbackward">
             <prev/>
          </onevent>
          <do type="accept">
             <go href="#display_fav"/>
          </do>
          <p> Pick your fav Book:
          <select name="fav" title="Stooges">
             <option value="Xiao">Xiao ao jiang hu</option>
             <option value="She">She diao ying xiong</option>
             <option value="Lu">Lu ding ji</option>
             <option value="Shen">Shen diao xia lv</option>
          </select>
          </p>
          </card>

          <card id="GL">
          <onevent type="onenterbackward">
             <prev/>
          </onevent>
          <do type="accept">
             <go href="#display_fav"/>
          </do>
          <p> Pick your fav Book.
          <select multiple="true" title="Gu Long" name="fav" >
             <option value="Gu">Gu xing zhuan</option>
             <option value="Da">Da di fei ying</option>
             <option value="Tian">Tian ya ming yue dao</option>
             <option value="feng">Lu xiao feng</option>
          </select>
          </p>
          </card>

          <card id="display_fav">
          <p> Your fav was $fav. </p>
          </card>
          </wml>

          posted on 2006-03-17 10:59 kelven 閱讀(485) 評(píng)論(0)  編輯  收藏 所屬分類: WML

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 合川市| 阳朔县| 贵南县| 海伦市| 和静县| 宣恩县| 达日县| 科技| 榆中县| 阜宁县| 湖北省| 甘孜县| 石林| 永平县| 囊谦县| 卓尼县| 襄汾县| 邹平县| 宝山区| 金华市| 隆尧县| 沿河| 天水市| 剑川县| 南陵县| 闻喜县| 皋兰县| 南召县| 台湾省| 攀枝花市| 东山县| 青铜峡市| 安阳县| 喀什市| 景德镇市| 兴仁县| 东阳市| 沂南县| 建始县| 榆中县| 西城区|