WML程序在結構上形式上與html程序有很多相似之處。下面我們就根據一個(gè)實(shí)例來(lái)分析一下WML程序的結構及組成。
1、WML的元素和標簽
分析實(shí)例之前,我們有必要對WML的元素和標簽予以簡(jiǎn)單說(shuō)明。與HTML類(lèi)似,WML的主要語(yǔ)法也是元素和標簽。元素是符合DTD(文檔類(lèi)似定義)的文檔組成部分,如title(文檔標題)、IMG(圖像)、table(表格)等等,元素名不區分大小寫(xiě)。WML使用標簽來(lái)規定元素的屬性和它在文檔中的位置。標簽使用小于號(<)和大于號(>)括起來(lái),即采用“<標簽名>”的形式。標簽分單獨出現的標簽和成對出現的標簽兩種。大多數標簽是成對出現的,由首標簽和尾標簽組成。首標簽和尾標簽又分別稱(chēng)為起始標簽和終止標簽。首標簽的格式為“<元素名>”,尾標簽的格式為“</元素名>”。成對標簽用于規定元素所含的范圍,比?lt;b>和</b>標簽用于界定黑體字的范圍,也就是說(shuō)<b>和</b>之間包住的部分采用黑體字顯示。單獨標簽的格式為“<元素名/>”,他的作用是在相應的位置插入元素。如〈br/〉標簽表示在該標簽所在位置插入一個(gè)換行符。
2、WML程序結構形式及組成的實(shí)例分析
了解了上述知識后,下面我們在分析一個(gè)實(shí)例程序。程序如下:
<?xml version="1.0"?> <wml> <card id="card1" ontimer="#card2" title="Tookit Demo"> </p> <card id-"card2" ontimer="#card 3"title="Toolkit Demo"> <card id="card3"title="Toolkit Demo"> 該程序運行后將在WAP手機屏幕依次顯示3屏信息。先顯示"Welcome to ...",然后顯示"The Nokia Wireless Application Protocol...",最后顯示"Tookit!"。顯示時(shí)每屏都有標題"Tookit Demo",相鄰兩屏之間延時(shí)為50,其單位大小為1/10秒,延時(shí)50即5秒。 通過(guò)以上實(shí)例我們可以了解到WML程序的結構形式及組成: 1)語(yǔ)法。WML與HTML極為相似。仍然是一種標記語(yǔ)言,并且延續了XML的語(yǔ)法規則,具體的語(yǔ)法我們會(huì )以后的學(xué)習過(guò)程中遇到。 2)文件聲明。所有的WML程序必須在文件的開(kāi)頭處聲明XML文件類(lèi)型,包括XML的版本,WML的文檔類(lèi)型、所用規范等。聲明形式如下: <?xml version="1.0"> 3)標簽。在WML語(yǔ)言中需要使用標簽(Tag),其使用形式與HTML和XML等標記語(yǔ)言中的形式是完全一致的。 4)元素。WML的元素(Element)用于描述卡片組(Deck)的標記信息即結構信息。一個(gè)元素通常有一個(gè)首標簽、內容、其它元素及一個(gè)尾標簽組成,具有下述兩種結構之一: <首標簽>內容</尾標簽> 或 <標簽/> 元素包含的內容中還可以有元素,這些元素也是有首標簽、相應內容、其它元素及尾標簽組成。不包含內容的元素成為空元素。它為一個(gè)單獨的標簽?;蛘哒f(shuō),單獨的標簽也是一種元素。 5)屬性。WML與XML一樣,其標簽可以包含很多屬性。屬性用于給標簽提供必要的附加信息,且屬性?xún)热萃ǔT谄鹗紭撕瀮仁褂?。不過(guò),屬性?xún)热莶粫?huì )被瀏覽器顯示,它至作為參數為標簽提供必要的信息。 指明屬性值的時(shí)候,需要把該值用引號擴起來(lái),可以是單引號或者雙引號,引號通常成對嵌套使用。屬性名稱(chēng)必須小寫(xiě)。例如:<card id="card 1" ontimer="#card2" title="Toolkit Demo"> 而且,單引號的屬性中還可以包含雙引號的屬性。實(shí)體字符也可以作為屬性值。實(shí)體字符是指諸如&、<、>、’、"的特殊字符,在WML程序中顯示著(zhù)類(lèi)字符需要特殊處理,后面我們介紹具體方法。 6)注釋。WML程序中也可以加入注釋。注釋內容用于給開(kāi)發(fā)人員順利閱讀源代碼提供方便,它不會(huì )被瀏覽器顯示出來(lái)。注釋內容在標簽中用感嘆號(?。┮?,并用于<!--注釋內容-->的形式。例如:<!-- Write your card implementation here.-->。需要說(shuō)明的是,XML程序中不支持注釋的嵌套。 7)文檔結構。WML文檔是由“卡片(Card)”和“卡片組(Deck)”構成的,一個(gè)Deck是一個(gè)或多個(gè)Card的集合。當客戶(hù)端發(fā)出請求之后,WML即從網(wǎng)絡(luò )上把Deck發(fā)送到客戶(hù)瀏覽器,這是用戶(hù)就可以瀏覽Deck內包含的所有Card,而不必從網(wǎng)上單獨下載每一個(gè)Card,程序中的第一個(gè)Card是缺省得可見(jiàn)的Card。 注意:Deck是一副紙牌的意思,這里是指一疊卡片,所以我們在這里稱(chēng)之為它為“卡片組”。另外,Card指的是WAP手機屏幕大小的網(wǎng)頁(yè),盡管有時(shí)一鯟ard可能需要多屏才能顯示完,但我們也可以把它翻譯成“頁(yè)面”,不過(guò)這樣與HTML中的頁(yè)面容易混合。因此我們在這里稱(chēng)之為卡片。 3、WML程序的基本結構 以上我們簡(jiǎn)單分析了WML的程序結構及組成,由此大家可以對WML程序有個(gè)整體上的初步認識。下面我們給出WML程序的基本結構。 <?xml version="1.0"?> 該基本結構可以分為以下幾個(gè)關(guān)鍵部分: 1)聲明。WML程序有許多Deck組成,對于每一個(gè)Deck,在其文檔開(kāi)頭必須進(jìn)行XML的聲明和文檔類(lèi)型DOCTYPE的聲明。 XML聲明總是在文件的第一行,注意前面最好不要有空格或者還行: <?xml version="1.0"?> 2)緊跟著(zhù)是DOCTYPE聲明,注意聲明是字母的大小寫(xiě)不要搞錯:
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "
<timer value="50"/>
<p aligh="center">
</br></br></br>
<big>
<!--Write your card implementation here.-->
Welcome to....
</big>
</card>
<timer value="50"/>
<p align="center">
<br/><br/>
<b>
The Nokia<br/>
</b>
Wireless Application Protocol
</u>
...
</p>
</card>
<p align="center">
<br/><br/><br/>
<big>
<i>
Toolkit
</i>
</big>
</p>
</card>
</xml>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "<wml>
<head>
<access/>
<meta..../>
</head>
<card>
Some contents...
</card>
<wml>
聯(lián)系客服