變數(Variables)

藉由參數或變數的設定,能夠改變所有WML的設定,你可以設計一個動態的 Cards和Decks,WML變數可以代替字串,並且在執行期間改變其值

一個變數如果等於一個空字串或為未知及未定義將不會被設值 ,若不等於空字串將會被設定.

 

成員 setvar

成員 setvar 設定目前瀏覽的內容其中的設定值,如果屬性 name不能等於

一個合法的變數將會被忽視

  • 屬性表:

    name=vdata 指定變數名稱,此屬性為必須的
    value=vdata 指定變數值,此屬性為必須的
    id 見” 一般屬性”
    class 見” 一般屬性”
  • 範例[33]

    下列的例子,將為變數 product 給予一個預設值 WapSdk且提供一個彈性的標籤為Clear,當使用者選擇 Clear,porduct的值將會被清除,而目前的deck將被重新顯示空的值 .


    <card id=”product” title=”Choose Product”>
    <p>
    product name:
    <input title=”Product name” name=”product” value=”WapSdk”/>
    <do type=”accept” label=”Clear”>
    <refresh>
    <setvar name=”product” value=””/>
    </do>
    </p>
    </card>

    變數命名 (Naming variables)

    WML 變數名稱須使用US-ASCII 字元碼或者利用底線連結字元 ,下列的例子將介紹合法的變數名稱

    This is a $var

    This is a another $(var)

    This is an escaped $(var:e)

    Long form of escaped $(var:escape)

    Long form of unescap $(var:unesc)

    Short form of no-escape $(var:N)

    Other legeal variable forms: $_X $X32 $Test_9A

    這種命名法則將會造成一種副作用,使得符號 $將以一對$$來編碼,用一個 $符號即使給與隨便的值也會被替代.

    為了在WML的deck中能夠明白的指定和使用錢字號 (Dollar sign)

    使用下列語法:

    $$

    利用兩個dollar sign來明確指定….

    例:

    this is a $$ character

    被顯示為

    this is a $ character

     

    變數命名有分大小寫……

    有效可參考的變數(Validating variables)

    在WML的文件中,任何跟隨在 $後的字串將會被當成一個可以參考的變數且是有效的 .任何一個參考變數必須使用適當變數命名法則 ,每一個變數將被放置在card的內容(#PCDATA)的值或者是 %vdata或/%href中的屬性值,如果使用無效的命名法則 ,將會使整個deck中的變數值出錯或者亂放

     

  • 範例[34]

    下列例子將顯示無效的變數的使用:


    <!--bad variable syntx-- >
    Balance left is $ 10.00
    <! - - bad placement (in the type attribute) - - >
    < do type=”x-$(type)” label=”$type”>
     

    限制的變數內容(Restricting variable context)

    用戶代理商可能提供用戶工具來參考而不倚賴於目前的內容,例如用戶代理器可能提供書籤的功能或者URL的對話窗,使得用戶將跟目前的網頁內容失去聯繫,用戶代理者將自行建立一個新的航行

     

    設定變數(Setting variables)

    下列有很多種方式可以去設定一個變數的變數值 ,當一個變數被設定而且已經被定義了 ,則目前值將被更新.

    成員 setvar 允許你去設定變數值,其存在於下列的 task element中

    go

    prev

    refresh

    變數也可以在下列的情況中被設定..

    1. Input成員可以利用屬性name來得到使用者鍵入的值
    2. Select成員可以給予屬性value中的值藉由 option成員

    成員 setvar 可以指定變數名稱和值, 例如 :

    < setvar name=”location” value=”$(x)”/>

     

    當你在設定變數時,請參考下列幾點

      1. 你可以透過WMLScript來改變變數值,這代表 WML和WMLScript使用相同的變數
      2. 你可以設定和編輯變數在WAP ToolKit的變數窗
      3. 你可以使用card成員的newcontext屬性來清除目前瀏覽內容的所有變數值
      4. 如果go成員中的href屬性有變數參考值 ,不能用setvar改變之

    替換變數(Substituting Variables)

    你可以替換一些在格式文件中(PCDATA),選項值 (vdata),和在WML成員中的href屬性的值 ,然而只有文字的替換,變數值的替換發生在執行期間 ,一個替換只是字串的替換動作,如果是一個未定義的值被參考 ,會以空字串代替.

     

    變數值被替換時,可以轉換不同的型式 ,下列表格將總結上面內容

    $setvar 或 $(setvar) 替換 setvar的值,代理者在適當的

    文件下使用 URL的跳出協定來替

    換該變數

    $(setvar:e)或$(setvar:escape) 替換 setvar的值,根據URL的編碼

    協定 ,來替換非字母與數字的字元

    $(setvar:unesc) 替換 setvar的值, 根據URL的編

    碼協定 ,不替換非字母與數字的字 元

    $(setvar:N)或$(setvar:noesc) 替換 setvar的值,而不替換非字母

    與數字的字元

    下列例子將介紹登入名字到server去,以致於資料能夠被送到客戶端

     


    <go method=”post” href=”http:/hostname/servlet/dealer”>
    <postfield name=”make” value=”ford”/>
    <postfield name=”car” value=”escort”/>
    </go>

     

    詳細資料請參考WML 規則書…

    替換語法傳遞變數

    變數的傳遞語法(例如 $x)在所有的XML被傳遞

     

    下列例子是相同的針對X的參考

    $X

    $#x24;X

    $&#x58;

    &#36;&#x58;