WML(Wireless Markup Language - 無線標記語言)。它是一種從 HTML 繼承而來的標記語言,但是 WML 基於 XML,因此它較 HTML 更嚴格。
WML 被用來創建可顯示在 WAP 浏覽器中的頁面。用WML編寫的頁面被稱為 DECKS。DECKS 是作為一套 CARDS 被構造的。
這種描述語言同我們常聽說的HTML語言同出一家,都屬於XML語言這一大家族。WML的語法跟XML一樣,WML是XML的子集。
HTML語言寫出的內容,我們可以在我們的PC機上用IE或是Netscape等浏覽器進行閱讀,而WML語言寫出的文件則是專門用來在手機等的一些無線終端顯示屏上顯示,供人們閱讀的,並且同樣也可以向使用者提供人機交互界面,接受使用者輸入的查詢等信息,然後向使用者返回他所想要獲得的最終信息。
[編輯本段]什麼是 WMLScript?
WML 使用 WMLScript 在客戶端運行簡單的代碼。WMLScript 是一種輕量級的 JavaScript 語言。不過,WML 腳本並不嵌在 WML 頁面中。WML頁面僅僅含有對腳本 URL 的引用。WML 腳本在 WAP 浏覽器運行之前,需要先在服務器上被編譯為字節編碼。
建立網頁制作環境
WML文件本身就是文本文件,所以編輯不成問題,順手的編輯器都可以用。
當然,由於目前的浏覽器還都不能顯示 WML頁面,而我們又不能總在手機上進行測試(速度太慢),所以需要模擬器。現在象NOKIA、ERICSSON、MOTOROLA等手機制造商都生產了相應的產品,你只要下載就行了。當然除了模擬器以外,還需要圖形制作轉換器(用來制作WAP格式的圖形文件)、字符轉碼器(漢字<=> UNICODE)等等,本站工具及論壇頁面均有說明。
WML文件結構
WML的頁面通常叫做桌面(DECK),由一組互相鏈接的卡片(CARD)組成。當移動電話訪問一個WML頁面的時候,頁面的所有CARD都會從WAP服務器下載到設備裡。CARD之間的切換由電話內置的計算機處理,不需要再到服務器上取信息了。CARD裡可以包含文本、標記、鏈接、輸入控制、任務(TASK)、圖像等等。CARD之間可以互相鏈接。
文檔的實體包含在<wml>...</wml>標記中,文檔裡每個CARD又包含在<card>...</card>標記中,然後實際的文字段落則包含在...
標記中。
簡單例子:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="HELLO" title="HELLO">
Hello world!
</card>
</wml>
顯示結果如下:
------ HELLO ------
Hello World!
DECK裡面各個組成部分的具體解釋在本教程的其他部分有說明。
WML字符集
WML是XML的子集,繼承了XML的字符集設置。WML文檔缺省的字符集是UTF-8。
要顯示中文,有兩種辦法。最簡單的辦法就是在文檔頭使用encoding,即把第一行改為:
<?xml version="1.0" encoding="gb2312"?>
然而令人喪氣的是,這種方法有些手機和模擬器並不支持(將來會的),所以目前第2種方法更普遍:不改變字符集設置,但是在寫中文的時候采用UNICODE代表中文字符,如:
<b>通訊錄</b>
代表:
通訊錄
WML元素:標記(Tag)和屬性
WML的主要內容是文本,由於標記會降低與手持設備的通訊速度,所以WML標准裡僅僅使用了很少一部分。用於表格和圖像的的標記幾乎都被排除了。
與XML一樣,在WML語言中,所有元素都放在符號"<" 和 ">"中,並且包含一個開始標志、一個結束標志和一個內容標志,或者使用自身結束的控制標記。就象這樣:
<tag>內容</tag> 例如:Hello World!
或
<tag/> 例如:
和 <go href="#done"/>
WML同樣支持在標志中標出屬性。屬性是標志的附加信息,與元素的內容不一樣,它並不在屏幕上顯示出來。屬性通常在元素的開始標志後指定。如上面最後一個例子。
由於WML是XML的一種應用,因此所有的WML標記和屬性都是大小寫敏感的(<wml>跟<WML>完全不同),而且所有的標記都必須正確地結束。WML要求屬性的值必須放在雙引號或單引號內。單引號可放在屬性標志內或雙引號內。字符亦可作為屬性的值。
WML注釋
XML支持這樣的注釋格式:
<!這句話你在手機上看不到-->
這些注釋在浏覽器中並不顯示出來。
WML不支持嵌套元素注釋。
鏈接(URL)
WML外部引用方式跟HTML相同
http://www.itsalon.net/index.wml 或
http://www.itsalon.net/index.wml#login
內部引用,如果next是當前DECK中的一個CARD時,可以用這種方式:
#next
提供鏈接功能的WML元素有2個:<go>(參見任務)和<anchor>(參見事件)。
CDATA
XML支持CDATA的概念,以顯示不需要解釋的文本。下面的例子使用CDATA元素在WML頁面中顯示WML命令文本。
<! [CDATA [ <card name="bogus">this is data
</card> ] ]>
浏覽器窗口將顯示如下內容:
<card name="bogus">this is data
</card>