元素和標簽是WML的主要語法,它們決定了WML編程的基本原則。本章我們將從WML的元素、標簽、屬性等方面詳細講解WML的編程方法。學習本章知識之前,讀者應當了解WML元素與標簽的區別。WML的元素通常有一個首標簽、內容、其它元素及一個尾標簽組成。也就說,單獨的標簽是一個元素,成對出現的標簽與其包含的內容也構成一個元素。由於元素牽涉及標簽,標簽又涉及屬性。
3.1 卡片、卡片組及其屬性我們前面介紹了WML的卡片與卡片組,主要從概念和相互關系的角度進行了分析。我們這裡則從卡片、卡片組的組成、相關元素、標簽技術性等編程角度進行分析和講解。 3.1.1 共有屬性
WML元素的共有屬性主要有3個:id、class和xml:lang屬性。
WML的所有元素都有兩個核心屬性,即標示(id)和類(class)屬性。它們主要用於服務器方的信息傳輸。其中,id屬性用於定義元素在卡片組中的唯一標示,即它的名稱;class屬性用於給當前元素定義一個或更多的類(class)。與卡片組一樣,類(class)也是有名字的,而且多個元素可以使用一個類(class)名。具有相同類名的單一卡片組中的所有元素均可被看作相同類的一個部分。類名是區分大小寫的。如果在class屬性列表中,一個元素多個唯一的類名,那麼該元素可以看作這些類中的一部分。具有同一屬性的多個類名必須用兩個以上的空格間隔,WML程序執行時將忽視其中多余的類名及其屬性。
另外,在WML程序,所有包含文本的元素均具有“xml:lang”屬性。該屬性用於指定當前元素及其屬性所用的描述語言,如英國英語、美國英語、法語、德語等,並可以為用戶浏覽器選擇顯示文本的語言提供依據。
3.1.2 WML程序的文件頭
合法的WML卡片組均屬合法的WML文件,因此它必須包含WML的聲明及文件類型的聲明。典型的WML程序的文件頭包括我們前面多次提到的以下兩行程序:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//wapforun//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
編寫WML程序時,我們必須寫入這兩行程序,並放在程序的開始處。其中"-//wapforun//DTD WML 1.1//EN"是標准通用標記語言SGML的公共標示;"http://www.wapforum.org/DTD/wml_1.1.xml"是WML程序文檔類型的標示。文檔類型標示也可以是"text/vnd.wap.wml"或“application/vnd.wap.wmlc”,其中前者制定WML的原文類型,後者制定WML程序編譯後代碼類型。
3.1.3 WML元素
WML的WML元素用於定義一個卡片組,並通過<wml>與</wml>標簽包含和封裝該卡片組中的所有卡片及信息。它的語法格式如下:
<wml xml:lang="lang">
內容(content)
</wml>
其中xml:lang="lang"用於指定文檔所用語言(前面已有介紹),語言"lang"的值屬於NMTOKEN型數據。
wml元素中包含的內容(content)中除了文本、圖像等信息之外,還可以包含head、template及card元素。其中head、template元素如果包含的話則只可包含一次,而card元素必須至少包含一次。有關這些元素的用法我們後面介紹。
3.1.4 template元素
template元素用於為當前卡片組中的所有卡片定義一個模板,同一規定卡片的某些參數。模版中的事件處理功能則可將這些參數自動應用於同一卡片組中的所有卡片。不過,我們也可以是其中某個或某幾個卡片不采用模板規定的形式,方法是在該卡片中定義一個同名的事件來替代模板塊中相應的事件。template元素通過<template>和</template>標簽含所需內容(content)而實現模板功能的,其語法格式如下:
<template oneterforward="href" onenterbackwared="href" ontimer="href">
內容(content)
</template>
template元素包含的內容中,除了卡片的一般參數外,還可以包含任意多次的do元素和onevent元素。template元素屬性的功能及用法說明如下:
1)oneterforward。當用戶在浏覽器中進入當前卡片時,該屬性將指定超鏈(href)的URL地址,浏覽器將據此打開URL指定的卡片或事件。
2)oneterbackward。與上一屬性類似,該屬性也可以指定其相應卡片或事件的URL地址。如果用戶浏覽時執行prev任務,那麼浏覽器就會定位到該屬性所指定超鏈(href)的URL地址,並打開URL指定的卡片或事件。
3)ontimer。當指定時間timer過期的時候,用戶浏覽器就根據ontimer屬性指定的URL打開相應的卡片。
3.1.5 card元素
WML的卡片組是由一個或多個卡片(card)構成的,每個卡片都包含有一套用戶和浏覽器交互操作的配置及模式。用戶對交互操作的需求是多樣性的,所以卡片定義時也必須是多樣性的。為此,WML提供了card元素,通過<card>和</card>標簽定義一個卡片的各種屬性、包含內容。它的語法格式如下:
<card id="name" title="label" newcontext="boolean" ordered="true" onenterforward="href" onenterbackward="href" ontimer="href">
內容(content)
</card>
card元素中包含的內容(con
12345678下一頁