基本格式和檔案頭
wml檔案的一般格式:
<?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/>
<meta..../>
</head>
<card>
Some contents...
</card>
<wml>
結構看上去和HTMl檔案很類似,對於每一個DECK,在其文檔開頭必須指明以下的型別宣告:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
千萬注意字母的大小寫。對於一個DECK,其檔案大小最好不要超過1.2K。
<wml>標籤和HTML中的<html>標籤一樣,用來表明這是一個 WML的DECK,它有一個可選的xml:lang屬性來制定文檔的語言,比如<wml xml:lang="zh">表示文檔語言為中文。
和HTML一樣<head>標籤包含了該DESK的相關資訊。<head> 標籤之間可以包含一個<access>標籤和多個<meta>標籤。
<access domain="域" path="/路徑" />相當於HTML中的<BASE>標籤,指定該DECK的存取控制資訊,它用兩個可選的屬性,domain用來指定域,預設值為當前域, path用來指定路徑,預設值為"/",即根目錄。由於 <access>單獨使用,所以要用/結尾,以後對於類似的情況不再贅述。
<meta 屬性 content="值" scheme="格式" forua="true|false"/> 和HTML中的類似,提供了該DECK的meta資訊。屬性是必選的,包括一下三種情況
name="name" UP.Link Server忽略meta資料
http-equiv="name" UP.Link Server將meta 資料轉為 HTTP 回應標頭(同HTML)
user-agent="agent" UP.Link Server 直接將 meta 資料傳給手機裝置,content屬性也是必選的,其內容根據屬性而定。scheme屬性目前尚不支援。forua 為可選屬性,指定在該wml檔案傳到用戶端之前,<meta>標籤是不是被中間代理刪除(因為傳輸的協議可能改變),預設值為false。
目前支援的meta資料:
<meta http-equiv="Cache-Control" content="max-age=3600"/>指定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"/>。
一個DECK可以包含多個CARD,每個CARD的內容可能不止一屏顯示,注意DECK,CARD和螢幕顯示範圍的關係。一個CARD用<card>和</card>包含。<card>可以包含以下可選的屬性:
<card id="name" title="label" newcontext="false" ordered="true" onenterforward="url" onenterbackward="url" ontimer="url">
*id屬性用來指定CARD的名字,可用來在CARD間跳轉,相當於在HTML中在頁內跳轉時用<A NAME="jumpHere">。
*title屬性用來作為書籤的標記,該屬性一般不會顯示在螢幕上。
*newcontext屬性,預設值為false, 用來指示當跳轉到本CARD時,手機是不是要清除以前保留的資訊,包括變數,堆棧裡的記錄,重新設定手機狀態等。
*ordered屬性,預設值是true,表明該CARD裡的內容是按固定的順序顯示, 還是按使用者的選擇來顯示。這點和HTMl不同,CARD 頁面裡的內容可以按一定的順序顯示,預設的是按線性順序顯示,即按代碼的順序,但是,要注意的是,以下三個標籤必須按以下順序來寫<onevent> <timer> <do>, (這和以後要講的“事件”有關)。這樣做是為了方便填表單,當ordered設定為true時,如果一個表單的內容不能在一屏裡顯示完,就分成多屏顯示;當ordered設定為false時,手機可以顯示一個概要CARD來總結有效選項,使用者可以從中選取表單選項來填寫。
*onXXX屬性,類似於HTML標籤中的onXXX屬性,用來捕捉事件,當事件被觸發時執行指定的操作(任務),在這裡是轉向某個URL。