WML 文檔結構祥解
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首先定義一個Deck,然後在Deck內封裝信息和Card。
3、文件頭(Head Element)
頭信息包含與Deck有關的信息,包括meta數據和控制元素。
3.1、訪問權限設置(Access)
該元素用於設置有訪問當前Deck權限的列表。如果Deck內不包含Access Element信息,該Deck下的Access Element處於無效狀態,其他所有的Deck都可以訪問該Deck。
相關屬性:
domain:假如設置 <Access domain="sina.com.cn"/> 那麼 http://www.sina.com.cn/ 將有訪問權限, 而 http://www.sino.com.cn/ 和 http://www.sina.Net.cn/ 就沒有.
path:工作原理與Domain非常相似,例如設置<Access path="/internal"/> 那麼"/internal/wml" 將獲得訪問權限,而"/internal-wml"就沒有。
示例:
做如下設置 <Access domain="sina.com.cn" path="/wap"/>
那麼以下幾個Url具有訪問權限:
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
以下的幾個Url沒有訪問權限:
http://www.sina.com/wap/getuid.CGI
http://www.sina.com.cn/internal/wap/getuid.CGI
3.2、頭元素設置(Meta)
<meta 屬性 content="值" scheme="格式" forua="truefalse"/>和Html中的類似,提供了該DECK的meta信息。
例如:<meta http-equiv="Cache-Control" content="max-age=0" forua="true"/>
content屬性是必選的,其內容根據屬性而定。scheme屬性目前尚不支持。forua為可選屬性,指定在該wml文件傳到客戶端之前,<meta>標簽是不是被中間代理刪除(因為傳輸的協議可能改變),默認值為false。
目前支持的meta數據:
<meta http-equiv="Cache-Control" content="max-age=0"/>指定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"/>。
4、模板(Template)
為了節省資源,可以把每個Card中都要用到的Task設置在模板中,供當前Deck中所有Card使用,加入個別Card不需要該模板內容,可以Override掉它(詳見任務屏蔽)。
5、卡片(Card)
適用事件
以下事件適用於Card和Template,參見前面的相關說明。
1. onenterbackward
2. onenterforward
3. ontimer
卡片屬性(Card)
id:同一Deck內Card的唯一標識,可以作為標簽被使用。(#nextcard).
title:卡片標題。不同的浏覽器處理標題處理title的原則不一樣,有的浏覽器會顯示標題,如果當前卡片沒有設置標題,當前卡片的URL會被顯示在標題位置。有些浏覽器為了節省顯示區域會忽略標題。
newcontext:默認值為false,用來指示當跳轉到本CARD時,手機是不是要清除以前保留的信息,包括變量,堆棧裡的歷史記錄,重新設置手機狀態等。
ordered 布爾變量,聲明Card是否有序。通常可以用來開發自動播放的幻燈片效果。
示例:
<?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>