WML程序在結(jié)構(gòu)上形式上與Html程序有很多相似之處。下面我們就根據(jù)一個(gè)實(shí)例來(lái)分析一下WML程序的結(jié)構(gòu)及組成。
1、WML的元素和標(biāo)簽
分析實(shí)例之前,我們有必要對(duì)WML的元素和標(biāo)簽予以簡(jiǎn)單說(shuō)明。與HTML類似,WML的主要語(yǔ)法也是元素和標(biāo)簽。元素是符合DTD(文檔類似定義)的文檔組成部分,如title(文檔標(biāo)題)、IMG(圖像)、table(表格)等等,元素名不區(qū)分大小寫。WML使用標(biāo)簽來(lái)規(guī)定元素的屬性和它在文檔中的位置。標(biāo)簽使用小于號(hào)(<)和大于號(hào)(>)括起來(lái),即采用“<標(biāo)簽名>”的形式。標(biāo)簽分單獨(dú)出現(xiàn)的標(biāo)簽和成對(duì)出現(xiàn)的標(biāo)簽兩種。大多數(shù)標(biāo)簽是成對(duì)出現(xiàn)的,由首標(biāo)簽和尾標(biāo)簽組成。首標(biāo)簽和尾標(biāo)簽又分別稱為起始標(biāo)簽和終止標(biāo)簽。首標(biāo)簽的格式為“<元素名>”,尾標(biāo)簽的格式為“</元素名>”。成對(duì)標(biāo)簽用于規(guī)定元素所含的范圍,比?lt;b>和</b>標(biāo)簽用于界定黑體字的范圍,也就是說(shuō)<b>和</b>之間包住的部分采用黑體字顯示。單獨(dú)標(biāo)簽的格式為“<元素名/>”,他的作用是在相應(yīng)的位置插入元素。如〈br/〉標(biāo)簽表示在該標(biāo)簽所在位置插入一個(gè)換行符。
2、WML程序結(jié)構(gòu)形式及組成的實(shí)例分析
了解了上述知識(shí)后,下面我們?cè)诜治鲆粋€(gè)實(shí)例程序。程序如下:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapfourm.org/DTD/wml_1.1.xml">
<wml>
<card id="card1" ontimer="#card2" title="Tookit Demo">
<timer value="50"/>
<p aligh="center">
</br></br></br>
<big>
<!--Write your card implementation here.-->
Welcome to....
</big>
<card id-"card2" ontimer="#card 3"title="Toolkit Demo">
<timer value="50"/>
<p align="center">
<b>
The Nokia
</b>
Wireless application PRotocol
</u>
...
</p>
</card>
<card id="card3"title="Toolkit Demo">
<p align="center">
<big>
<i>
Toolkit
</i>
</big>
</p>
</card>
</xml>
該程序運(yùn)行后將在WAP手機(jī)屏幕依次顯示3屏信息。先顯示"Welcome to ...",然后顯示"The Nokia Wireless Application Protocol...",最后顯示"Tookit!"。顯示時(shí)每屏都有標(biāo)題"Tookit Demo",相鄰兩屏之間延時(shí)為50,其單位大小為1/10秒,延時(shí)50即5秒。
通過(guò)以上實(shí)例我們可以了解到WML程序的結(jié)構(gòu)形式及組成:
1)語(yǔ)法。WML與HTML極為相似。仍然是一種標(biāo)記語(yǔ)言,并且延續(xù)了XML的語(yǔ)法規(guī)則,具體的語(yǔ)法我們會(huì)以后的學(xué)習(xí)過(guò)程中遇到。
2)文件聲明。所有的WML程序必須在文件的開(kāi)頭處聲明XML文件類型,包括XML的版本,WML的文檔類型、所用規(guī)范等。聲明形式如下:
<?xml version="1.0">
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
3)標(biāo)簽。在WML語(yǔ)言中需要使用標(biāo)簽(Tag),其使用形式與HTML和XML等標(biāo)記語(yǔ)言中的形式是完全一致的。
4)元素。WML的元素(Element)用于描述卡片組(Deck)的標(biāo)記信息即結(jié)構(gòu)信息。一個(gè)元素通常有一個(gè)首標(biāo)簽、內(nèi)容、其它元素及一個(gè)尾標(biāo)簽組成,具有下述兩種結(jié)構(gòu)之一:
<首標(biāo)簽>內(nèi)容</尾標(biāo)簽>
或
<標(biāo)簽/>
元素包含的內(nèi)容中還可以有元素,這些元素也是有首標(biāo)簽、相應(yīng)內(nèi)容、其它元素及尾標(biāo)簽組成。不包含內(nèi)容的元素成為空元素。它為一個(gè)單獨(dú)的標(biāo)簽?;蛘哒f(shuō),單獨(dú)的標(biāo)簽也是一種元素。
5)屬性。WML與XML一樣,其標(biāo)簽可以包含很多屬性。屬性用于給標(biāo)簽提供必要的附加信息,且屬性內(nèi)容通常在起始標(biāo)簽內(nèi)使用。不過(guò),屬性內(nèi)容不會(huì)被瀏覽器顯示,它至作為參數(shù)為標(biāo)簽提供必要的信息。
指明屬性值的時(shí)候,需要把該值用引號(hào)擴(kuò)起來(lái),可以是單引號(hào)或者雙引號(hào),引號(hào)通常成對(duì)嵌套使用。屬性名稱必須小寫。例如:<card id="card 1" ontimer="#card2" title="Toolkit Demo">
而且,單引號(hào)的屬性中還可以包含雙引號(hào)的屬性。實(shí)體字符也可以作為屬性值。實(shí)體字符是指諸如&、<、>、’、"的特殊字符,在WML程序中顯示著類字符需要特殊處理,后面我們介紹具體方法。
6)注釋。WML程序中也可以加入注釋。注釋內(nèi)容用于給開(kāi)發(fā)人員順利閱讀源代碼提供方便,它不會(huì)被瀏覽器顯示出來(lái)。注釋內(nèi)容在標(biāo)簽中用感嘆號(hào)(?。┮?,并用于<!--注釋內(nèi)容-->的形式。例如:<!-- Write your card implementation here.-->。需要說(shuō)明的是,XML程序中不支持注釋的嵌套。
7)文檔結(jié)構(gòu)。WML文檔是由“卡片(Card)”和“卡片組(Deck)”構(gòu)成的,一個(gè)Deck是一個(gè)或多個(gè)Card的集合。當(dāng)客戶端發(fā)出請(qǐng)求之后,WML即從網(wǎng)絡(luò)上把Deck發(fā)送到客戶瀏覽器,這是用戶就可以瀏覽Deck內(nèi)包含的所有Card,而不必從網(wǎng)上單獨(dú)下載每一個(gè)Card,程序中的第一個(gè)Card是缺省得可見(jiàn)的Card。
注意:Deck是一副紙牌的意思,這里是指一疊卡片,所以我們?cè)谶@里稱之為它為“卡片組”。另外,Card指的是WAP手機(jī)屏幕大小的網(wǎng)頁(yè),盡管有時(shí)一個(gè)Card可能需要多屏才能顯示完,但我們也可以把它翻譯成“頁(yè)面”,不過(guò)這樣與HTML中的頁(yè)面容易混合。因此我們?cè)谶@里稱之為卡片。
3、WML程序的基本結(jié)構(gòu)
以上我們簡(jiǎn)單分析了WML的程序結(jié)構(gòu)及組成,由此大家可以對(duì)WML程序有個(gè)整體上的初步認(rèn)識(shí)。下面我們給出WML程序的基本結(jié)構(gòu)。
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1xml">
<wml>
<head>
<access/>
<meta..../>
</head>
<card>
Some contents...
</card>
<wml>
該基本結(jié)構(gòu)可以分為以下幾個(gè)關(guān)鍵部分:
1)聲明。WML程序有許多Deck組成,對(duì)于每一個(gè)Deck,在其文檔開(kāi)頭必須進(jìn)行XML的聲明和文檔類型DOCTYPE的聲明。
XML聲明總是在文件的第一行,注意前面最好不要有空格或者還行:
<?xml version="1.0"?>
2)緊跟著是DOCTYPE聲明,注意聲明是字母的大小寫不要搞錯(cuò):
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1xml">
3)<xml>標(biāo)簽。該標(biāo)簽用于包含和定義WML的一個(gè)Deck。它有一個(gè)可選的xml:lang屬性來(lái)制定文檔的語(yǔ)言,比如<wml xml:lang="zh">表示文檔語(yǔ)言為中文。
4)<head>標(biāo)簽。該標(biāo)簽用于包含和定義Deck的相關(guān)信息。<head>標(biāo)簽之間可以包含一個(gè)<access>標(biāo)簽和多個(gè)<meta>標(biāo)簽。
5)<access/>標(biāo)簽。它的一般形式是<access domain="域" path="/路徑"/>,主要用于制定當(dāng)前Deck的訪問(wèn)控制信息,有兩個(gè)可選的屬性。其中,domain用來(lái)制定域,默認(rèn)值為當(dāng)前域,path用來(lái)制定路徑,默認(rèn)值為“/”,即跟目錄。由于<access>單獨(dú)使用,所以要用“/”結(jié)尾,后面我們還會(huì)系統(tǒng)的講解WML的各種標(biāo)簽,這里即使看不懂也沒(méi)關(guān)系,主要有些感性的認(rèn)識(shí)就可以了。
6)<meta...>標(biāo)簽。它的一般形式是<meta 屬性 content="值" scheme"格式" forua="truefalse"/>,用于提供當(dāng)前Deck的meta信息,包括內(nèi)存數(shù)據(jù)處理方式,以及數(shù)據(jù)傳輸方式和處理方式等。有關(guān)該標(biāo)簽的詳細(xì)內(nèi)容我們后面會(huì)專門給出。
7)<card>標(biāo)簽。一個(gè)Deck可以包含多個(gè)Card,每個(gè)Card的內(nèi)容可能不止一屏顯示。對(duì)于每一個(gè)Card,WML均使用<card>和</card>進(jìn)行包含和定義。 <card>同時(shí)可以包含多個(gè)可選的屬性,如<card id="name" title="label" newcontext="false" ordered="true" onenterforwand="url" pmemterbackward="url" ontimer="url">。至于這些屬性的具體含義及功能,我們將在后面介紹。
(出處:http://www.49028c.com)
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注