<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    zhyiwww
    用平實(shí)的筆,記錄編程路上的點(diǎn)點(diǎn)滴滴………
    posts - 536,comments - 394,trackbacks - 0

    第二章 WML語(yǔ)言基礎(chǔ)

    [日期:2004-11-23] 來(lái)源:賽迪網(wǎng)? 作者: [字體:]
      完成WAP服務(wù)器的建立和WAP瀏覽器的安裝之后,我們接下來(lái)就可以使用WML語(yǔ)言來(lái)編寫(xiě)WAP網(wǎng)頁(yè)或應(yīng)用,并通過(guò)WAP服務(wù)器及瀏覽器進(jìn)行調(diào)試。從本章開(kāi)始我們將系統(tǒng)地學(xué)習(xí)WML語(yǔ)言,本章主要講解WML語(yǔ)言的基礎(chǔ)知識(shí),下一章全面講解WML的語(yǔ)法、標(biāo)簽和規(guī)則。

    2.1 WML的簡(jiǎn)單例子及編輯、測(cè)試方法

      無(wú)限標(biāo)記語(yǔ)言WML(Wireless Markup Language)是一種基于擴(kuò)展標(biāo)記語(yǔ)言XML(Extension Markup Language)的語(yǔ)言,是XML的子集。它可以顯示各種文字、圖像等數(shù)據(jù),是由WAP論壇(http://www.wapforum.org)提出并專(zhuān)為無(wú)線設(shè)備用戶(hù)提供交互界面而設(shè)計(jì)的,目前版本為1.1版。這些無(wú)線設(shè)備包括移動(dòng)電話(huà),呼機(jī)和個(gè)人數(shù)字助理PDA(Personal Digital Assistants)等。

    2.1.1 WML與WAP設(shè)備

    為了更好的了解和使用WML語(yǔ)言,開(kāi)發(fā)人員應(yīng)對(duì)WML使用的設(shè)備和支持WML的設(shè)備的特點(diǎn)、特征有個(gè)大概的了解。

    一般而言,WML使用的無(wú)線設(shè)備通常具有以下特點(diǎn):

    與普通的個(gè)人計(jì)算機(jī)相比,體積較小;
    設(shè)備的內(nèi)存有限,且其CPU性能也有限;
    通訊帶寬較窄、時(shí)延較長(zhǎng)。

    以移動(dòng)電話(huà)、PDA為例來(lái)講,支持WML的設(shè)備主要具有以下特征:

    有一個(gè)顯示屏幕,可顯示2.兇址啃?2各字符;2.兇址型ǔ0ūA舾δ馨磁サ囊恍校?br>支持?jǐn)?shù)字和字符的輸入;
    支持操作者使用箭頭或數(shù)字按鈕進(jìn)行選擇;
    支持ASCII的可打印碼;
    通常都有兩個(gè)可編程功能鍵,即Accpet鍵和Options鍵,一般安排在接近鍵盤(pán)的屏幕下方;
    通常有一個(gè)Prev導(dǎo)航鍵。

    我們介紹WML所使用WAP設(shè)備的目的,是希望讀者通過(guò)WAP設(shè)備的特點(diǎn)、特征來(lái)了解WML語(yǔ)言的特點(diǎn),進(jìn)而對(duì)WML編程所要解決的問(wèn)題有個(gè)大概的認(rèn)識(shí)。

    2.1.2 使用文本編輯器面寫(xiě)WML程序

    使用WML語(yǔ)言編寫(xiě)WAP網(wǎng)頁(yè)或應(yīng)用時(shí),需要使用一個(gè)編輯器進(jìn)行編輯。與HTML編程一樣,WML編寫(xiě)的程序也是純文件文本,可以使用任意文本編輯器進(jìn)行編寫(xiě),比如Windows系統(tǒng)中的“記事本(NotePad)”等。也可以使用比如Nokia WAP Toolkie等軟件(有關(guān)此具體的用法會(huì)在以后的學(xué)習(xí)過(guò)程中提起)。我們先介紹第一種方法,隨后介紹第二種。

    如果要使用"記事本(NotePad)"來(lái)編寫(xiě)WML程序,則可以在Windows系統(tǒng)中,單擊“開(kāi)始”按鈕,然后從出現(xiàn)的菜單中,依次將光標(biāo)指向“程序”、“附件”、“記事本”,啟動(dòng)“記事本”程序。屏幕上隨后就會(huì)出現(xiàn)它的編輯窗口,從中就可以輸入并編寫(xiě)WML程序了。

    作為舉例,我們可以輸入如下簡(jiǎn)單的程序。



    <?xml version="1.0"?>
    <!DOCTYPE wml PUBLIC "-//wapforun//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
    <xml>
    <card id="card1" title="Title">
    <P>
    <!--Write your card implementation here.-->
    Hello World!!
    </P>
    </card>
    </xml>


    輸完后將它保存為hello.xml文件。保存時(shí)注意文件的擴(kuò)展名應(yīng)為xml而不是txt。

    2.2 WML程序結(jié)構(gòu)

    上一節(jié)我們降解了一個(gè)簡(jiǎn)單的WML程序,具有HTML編程的讀者可以看出,WML程序在結(jié)構(gòu)上形式上與html程序有很多相似之處。下面我們就根據(jù)一個(gè)實(shí)例來(lái)分析一下WML程序的結(jié)構(gòu)及組成。

    2.2.1 WML的元素和標(biāo)簽

    分析實(shí)例之前,我們有必要對(duì)WML的元素和標(biāo)簽予以簡(jiǎn)單說(shuō)明。與HTML類(lèi)似,WML的主要語(yǔ)法也是元素和標(biāo)簽。元素是符合DTD(文檔類(lèi)似定義)的文檔組成部分,如title(文檔標(biāo)題)、IMG(圖像)、table(表格)等等,元素名不區(qū)分大小寫(xiě)。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)簽又分別稱(chēng)為起始標(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.2.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>

    </p>
    </card>

    <card id-"card2" ontimer="#card 3"title="Toolkit Demo">
    <timer value="50"/>
    <p align="center">
    <br/><br/>
    <b>
    The Nokia<br/>
    </b>
    Wireless Application Protocol
    </u>
    ...
    </p>
    </card>

    <card id="card3"title="Toolkit Demo">
    <p align="center">
    <br/><br/><br/>
    <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文件類(lèi)型,包括XML的版本,WML的文檔類(lèi)型、所用規(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)簽。或者說(shuō),單獨(dú)的標(biāo)簽也是一種元素。

    5)屬性。WML與XML一樣,其標(biāo)簽可以包含很多屬性。屬性用于給標(biāo)簽提供必要的附加信息,且屬性?xún)?nèi)容通常在起始標(biāo)簽內(nèi)使用。不過(guò),屬性?xún)?nèi)容不會(huì)被瀏覽器顯示,它至作為參數(shù)為標(biāo)簽提供必要的信息。

    指明屬性值的時(shí)候,需要把該值用引號(hào)擴(kuò)起來(lái),可以是單引號(hào)或者雙引號(hào),引號(hào)通常成對(duì)嵌套使用。屬性名稱(chēng)必須小寫(xiě)。例如:<card id="card 1" ontimer="#card2" title="Toolkit Demo">

    而且,單引號(hào)的屬性中還可以包含雙引號(hào)的屬性。實(shí)體字符也可以作為屬性值。實(shí)體字符是指諸如&、<、>、'、"的特殊字符,在WML程序中顯示著類(lèi)字符需要特殊處理,后面我們介紹具體方法。

    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)客戶(hù)端發(fā)出請(qǐng)求之后,WML即從網(wǎng)絡(luò)上把Deck發(fā)送到客戶(hù)瀏覽器,這是用戶(hù)就可以瀏覽Deck內(nèi)包含的所有Card,而不必從網(wǎng)上單獨(dú)下載每一個(gè)Card,程序中的第一個(gè)Card是缺省得可見(jiàn)的Card。

    注意:Deck是一副紙牌的意思,這里是指一疊卡片,所以我們?cè)谶@里稱(chēng)之為它為“卡片組”。另外,Card指的是WAP手機(jī)屏幕大小的網(wǎng)頁(yè),盡管有時(shí)一個(gè)Card可能需要多屏才能顯示完,但我們也可以把它翻譯成“頁(yè)面”,不過(guò)這樣與HTML中的頁(yè)面容易混合。因此我們?cè)谶@里稱(chēng)之為卡片。

    2.2.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的聲明和文檔類(lèi)型DOCTYPE的聲明。

    XML聲明總是在文件的第一行,注意前面最好不要有空格或者還行:

    <?xml version="1.0"?>

    2)緊跟著是DOCTYPE聲明,注意聲明是字母的大小寫(xiě)不要搞錯(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="true|false"/>,用于提供當(dāng)前Deck的meta信息,包括內(nèi)存數(shù)據(jù)處理方式,以及數(shù)據(jù)傳輸方式和處理方式等。有關(guān)該標(biāo)簽的詳細(xì)內(nèi)容我們后面會(huì)專(zhuān)門(mén)給出。

    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">。至于這些屬性的具體含義及功能,我們將在后面介紹。

    2.3 WML語(yǔ)言的基本知識(shí)

    上一節(jié)我們介紹了WML程序的基本結(jié)構(gòu),接下來(lái)我們介紹WML語(yǔ)言的基本知識(shí),主要包括WML的字符集、變量、數(shù)據(jù)類(lèi)型及WML程序的基本組成部分等。

    2.3.1 WML的字符集及編碼

    WML使用XML的字符集,即通用字符集ISO/IEC-1062.,也即統(tǒng)一字符編碼標(biāo)準(zhǔn)Unicode 2.0。同時(shí),WML還支持其他系列的字符集子集,例如UTF-8、ISO-8859-1或UCS-2等。其中:

    UTF-8是指通用字符集UCS(Universal Character Set)的轉(zhuǎn)換格式8(Transformation Format 8),主要傳輸國(guó)際字符集的轉(zhuǎn)換編碼。UTF-8采用了UCS字符的8位編碼,提供了十分安全的編碼格式,可以有效避免數(shù)據(jù)傳輸過(guò)程中的竊聽(tīng)、截取及非法解密。同時(shí),UTF-8與7位ACSII碼完全兼容,不會(huì)影響此類(lèi)編碼實(shí)現(xiàn)的程序;它的編碼規(guī)則十分嚴(yán)格,能夠有效避免同步傳輸錯(cuò)誤,而且還會(huì)支持其它字符集提供了足夠的空間。

    ISO-8859-1字符集是國(guó)際標(biāo)準(zhǔn)化組織ISO(International Standardization Organization)制定的ACSII字符集的擴(kuò)展集,能夠表示所有西歐語(yǔ)言的字符。與ISO Latin-1一樣,ISO-8859-1與Windows環(huán)境中普遍使用的美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)ANSI(American National Standards Institute)的字符集極為類(lèi)似,絕大多數(shù)情況下無(wú)需區(qū)分。在不特別指明的情況下,HTTP協(xié)議均使用ISOLatin-1字符集。因此,為了WML頁(yè)面中表示非ACSII(non-ACSII)字符,開(kāi)發(fā)人員需要使用相應(yīng)的ISO Latin-1編碼的字符。

    UCS-2是ISO 1062.標(biāo)準(zhǔn)中自定義的通用多8位編碼字符集(Universal Multiple-Octer Coded Character Set)的2字節(jié)(即16位)編碼標(biāo)準(zhǔn),其字符編碼值與Unicode字符的標(biāo)準(zhǔn)編碼值相等。

    WML文檔可以采用HTML 2.0規(guī)范所定義的任何字符編碼標(biāo)準(zhǔn)經(jīng)編碼處理。一般說(shuō)來(lái),WML文檔的字符編碼是需要轉(zhuǎn)換為另外的編碼格式,以與WAP用戶(hù)的手機(jī)瀏覽器所用字符標(biāo)準(zhǔn)相適應(yīng),否則,手機(jī)瀏覽器就無(wú)法顯示W(wǎng)ML頁(yè)面中的字符。然而,編碼轉(zhuǎn)換時(shí)可能會(huì)丟失一些字符信息,所以,如果在用戶(hù)端進(jìn)行WML文檔的編碼轉(zhuǎn)換,那么就可能導(dǎo)致某些結(jié)果信息丟失而不能被用戶(hù)所瀏覽。因此,如有必要,我們應(yīng)當(dāng)盡量在WML頁(yè)面?zhèn)魉偷接脩?hù)瀏覽器之前完成編碼轉(zhuǎn)換。

    為了解決這一問(wèn)題,一方面,我們需要為Web服務(wù)器補(bǔ)充定義WML的數(shù)據(jù)類(lèi)型,以讓服務(wù)器可以準(zhǔn)確傳輸這些數(shù)據(jù),另一方面,我們需要制訂編碼轉(zhuǎn)換的原則。

    2.3.2 WML字符使用基本規(guī)則

    WML是一種比較嚴(yán)格的語(yǔ)言,字符使用必須遵守相應(yīng)的規(guī)則,這些基本規(guī)則主要包括以下幾個(gè)方面:

    1)大小寫(xiě)敏感。在WML中,無(wú)論是標(biāo)簽元素還是屬性?xún)?nèi)容都是大小寫(xiě)敏感的,這一點(diǎn)繼承了XML的嚴(yán)格特性,任何大小寫(xiě)錯(cuò)誤都可能導(dǎo)致訪問(wèn)錯(cuò)誤。

    一般來(lái)說(shuō),WML的所有標(biāo)簽,屬性,規(guī)定和枚舉及它們的可接受值必須小寫(xiě),Card的名字和變量可大寫(xiě)和小寫(xiě),但它是區(qū)分大小寫(xiě)的。包括參數(shù)的名字和參數(shù)的數(shù)值都是大小寫(xiě)敏感的,例如variable1、Variable1和vaRiable1都是不同的參數(shù)。 2)空格。對(duì)于連續(xù)的空字符,程序運(yùn)行時(shí)只需要一個(gè)空格。屬性名、符號(hào)(=)和值之間不能有空格。

    3)標(biāo)簽。標(biāo)簽內(nèi)屬性的值必須使用雙引號(hào)(")或單引號(hào)(')括起來(lái)。對(duì)于不成對(duì)出現(xiàn)的標(biāo)簽,必須在大于號(hào)(>)前加上順斜杠(/),比如換行標(biāo)簽必須寫(xiě)成<br/>才正確。

    4)不顯示的內(nèi)容。在WML中,不顯示的字符主要包括換行符、回車(chē)符、空格和水平制表符,它們的8位十六進(jìn)制內(nèi)碼分別為10、13、32及9。

    程序執(zhí)行時(shí),WML將忽視所有的多于一個(gè)以上的不顯示字符,即WML會(huì)把一個(gè)或多個(gè)連續(xù)的換行、回車(chē)、水平制表符及空格轉(zhuǎn)換成一個(gè)空個(gè)。

    5)保留字符。這是WML的一些特殊字符,如小于號(hào)(<)、大于號(hào)(>)、單引號(hào)“'”、雙引號(hào)“"”、和號(hào)(&)。

    6)顯示漢字。如果希望WML程序執(zhí)行時(shí)能夠顯示漢字,則只需要程序開(kāi)頭使用encoding指定漢字字符集即可。例如:<?xml version="1.0" encoding="gb2312">。

    注意:指定漢字字符集的形式和方法可能因?yàn)殚_(kāi)發(fā)工具或WAP手機(jī)的不同而不同。

    2.3.3 變量

    WML編程中可以使用變量,變量使用前必須進(jìn)行定義。變量一旦在Deck中的某一個(gè)Card上定義過(guò),其他Card則可以不必重新定義就能直接調(diào)用該變量。

    定義變量的語(yǔ)法格式為:
    $identifier
    $(identifier)
    $(identifier:conversion)

    其中identifier指變量名,或說(shuō)變量標(biāo)示符;conversion指變量的替代。

    變量名是由US-ACSII碼、下劃線和數(shù)字組成的,并且只能以US-ACSII碼開(kāi)頭。變量名嚴(yán)格區(qū)分大小寫(xiě),也即,變量名是大小寫(xiě)敏感的。

    定義變量的語(yǔ)法在WML中享有最高的解釋優(yōu)先級(jí)。

    有關(guān)變量的使用說(shuō)明如下:

    1)在WML中,變量可以在字符串中使用,并且在運(yùn)行中可以更新變量的值。

    2)當(dāng)變量等同于空字符串時(shí),變量將處于未設(shè)置狀態(tài),也就是空(Null)。

    3)當(dāng)變量不等同于空字符串時(shí),變量將處于設(shè)置狀態(tài),也就是非空(Not Null)狀態(tài)。

    4)在“$identifier”形式下,WML通常以變量名后面的一個(gè)空格表示該變量名的結(jié)束。如果在某些情況下空格無(wú)法表示一個(gè)變量名的結(jié)束,或者變量名中包含有空格,則必須使用括號(hào)將變量名括起來(lái),即采用“$(identifier)”的形式。

      WML程序中的變量是可以替代的,我們可以把變量的數(shù)值賦給Card中的某一文本。有關(guān)變量替代說(shuō)明如下:

    1)在WML程序中,只有文本部分才可以實(shí)現(xiàn)替代。

    2)替代一般在運(yùn)行期發(fā)生,而且替代不會(huì)影響變量現(xiàn)在的值。

    3)任何標(biāo)簽是按照字符串替代的方式實(shí)現(xiàn)的。

    4)替代是按照字符串替代的方式實(shí)現(xiàn)的。

      由于變量在語(yǔ)法中有最好的優(yōu)先級(jí),包含變量聲明字符的字符串將被當(dāng)作變量對(duì)待,所以如果要使程序顯示“$”符號(hào),則需要連續(xù)使用兩個(gè)“$”進(jìn)行說(shuō)明。例如:<p> Your acconut has $$15.00 in it </p>一句顯示的結(jié)果為:Your account has $15.00 in it。

    2.3.2. WML核心數(shù)據(jù)類(lèi)型

      WML的核心數(shù)據(jù)類(lèi)型均屬于字符型數(shù)據(jù),是根據(jù)XML的數(shù)據(jù)類(lèi)型定義的,共有下述2.擲嘈停?1)CDATA型。這種數(shù)據(jù)類(lèi)型是WML用得最多的一種,可以是數(shù)字、字符串或包含數(shù)字的字符串。不過(guò)定義時(shí),不論是數(shù)字或字符串,都必須以文本的形式定義,及數(shù)據(jù)用引號(hào)引起來(lái)。CDATA型的數(shù)據(jù)僅用于屬性值。例如"$(value)"或name="value"等。注意,這里的value指CDATA型的數(shù)據(jù)值。

    2)PCDATA型。這是從CDATA中分解出來(lái)的一類(lèi)數(shù)據(jù),除了可以是文本形式的數(shù)字、字符串或兩者的混合串外,還可以是WML的標(biāo)簽。PCDATA型的數(shù)據(jù)只能用于WML的元素表示。

    3)NMTOKEN型。這是一類(lèi)特殊的數(shù)據(jù),凡是包含或部分包含數(shù)字、字母及標(biāo)點(diǎn)符號(hào)的數(shù)據(jù)均屬于NMTOKEN型數(shù)據(jù)。這種數(shù)據(jù)可以用標(biāo)點(diǎn)符號(hào)開(kāi)頭,但不用于定義變量名或元素名。

    4)id型。專(zhuān)門(mén)用于定義WML元素名稱(chēng)的數(shù)據(jù)類(lèi)型。

      在這2.擲嘈橢校珻DATA型用起來(lái)比較靈活,它可以使變量或數(shù)據(jù)免于語(yǔ)法檢查。這是因?yàn)椋珻DATA內(nèi)的數(shù)據(jù)內(nèi)容都會(huì)被當(dāng)作文本來(lái)處理,從而可以避免WML的語(yǔ)法檢查,直接作為文本顯示出來(lái)。

    2.3.5 WML數(shù)據(jù)值性質(zhì)

      除了NMTOKEN型數(shù)據(jù)外,WML其他3種數(shù)據(jù)都必須以文本形式即加上引號(hào)進(jìn)行定義。我們關(guān)心的問(wèn)題是,這些類(lèi)型的數(shù)據(jù)可以表示哪些數(shù)據(jù)值呢?或者說(shuō),它們所表示的數(shù)據(jù)值的性質(zhì)是什么呢?

    事實(shí)上,WML數(shù)據(jù)只在性質(zhì)上可以是長(zhǎng)度(Length)、宏變量(Vdata)、流(Flow)、內(nèi)行(Inline)、布局(Layout)、文本(Text)、超鏈(Href)、布爾值(Boolean)、數(shù)據(jù)(Number)或增強(qiáng)方式(Emphasis)。

    2.3.6 卡片與卡片組

    前面我們分析了WML程序的結(jié)構(gòu)時(shí),曾將講到WML文檔的信息是通過(guò)卡片集和卡片組集的形式進(jìn)行組織的。一個(gè)Deck是一個(gè)或多個(gè)Card的集合。當(dāng)客戶(hù)終端發(fā)出請(qǐng)求之后,WML即從網(wǎng)絡(luò)上把Deck發(fā)送到客戶(hù)的瀏覽器,Deck是服務(wù)器發(fā)送信息的最小單位。用戶(hù)瀏覽器收到Deck后,可以瀏覽其中包含的所有Card。Card用于表示或描述一個(gè)或多個(gè)用戶(hù)交互單位。

    2.3.7 卡片組模板

      同一卡片組通常會(huì)含有許多卡片,這些卡片的定義、屬性或格式通常都大同小異。如果我們逐一定義各個(gè)卡片,顯然是十分麻煩的。為此,WML提供了卡片組模板的功能,模板內(nèi)定義了一系列標(biāo)準(zhǔn)和參數(shù),可以應(yīng)用到同一卡片組的所有卡片中去,從而能夠大大地提高我們的編程效率。有關(guān)卡片組模板的內(nèi)容我們后面會(huì)專(zhuān)門(mén)介紹的。

    2.3.8 WML與URL、程序段錨點(diǎn)

    我們知道,環(huán)球網(wǎng)WWW是各種信息和設(shè)備的網(wǎng)絡(luò),為保證全球范圍內(nèi)的交互,人們制定了3種規(guī)范:其一,統(tǒng)一資源定位器URL提供所有網(wǎng)絡(luò)資源的標(biāo)準(zhǔn)命名方式和定位方式;其二,標(biāo)準(zhǔn)協(xié)議,如HTTP協(xié)議等,提供WWW資源的傳輸方式;其三。標(biāo)準(zhǔn)內(nèi)容類(lèi)型,如HTML、WML,提供WWW資源的內(nèi)容形式及標(biāo)準(zhǔn)。WML沿用了這些規(guī)范,并擴(kuò)大了URL使用的范圍。在WML中,不僅超連接、文件路徑及文件名可以作為URL處理,卡片名、宏變量名及各種內(nèi)部資源名等也可作為URL處理。

    為此,WML改進(jìn)了HTML命名資源位置的方式,采用程序錨點(diǎn)(Fragment Anchor)的形式來(lái)處理WML程序中某段程序的地位。程序段錨點(diǎn)根據(jù)文檔WML規(guī)則進(jìn)行定義,并按照程序段表示符前加井字好(#)的方式書(shū)寫(xiě)。使用程序段錨點(diǎn),WML程序可以在同一卡片組中定位不同的卡片。如果在程序中不指定程序段,那么程序中引用的URL名稱(chēng)則指整個(gè)卡片組,而且卡片組的名稱(chēng)同時(shí)也是本卡片組內(nèi)的第一個(gè)卡片的名稱(chēng)。 2.3.9 瀏覽器操作歷史

      為了在瀏覽器端管理WML程序的執(zhí)行,WML使用“瀏覽器前后關(guān)系”的功能保存WML程序執(zhí)行的狀態(tài)及各種參數(shù)、變量等,這樣可以用來(lái)記錄用戶(hù)的操作情況。同時(shí),WML還提供了一個(gè)簡(jiǎn)單的導(dǎo)航歷史模型,以URL地址的形式記錄了用戶(hù)瀏覽時(shí)的各種操作,并把這些URL地址放入歷史推棧。通過(guò)推棧,用戶(hù)即可實(shí)現(xiàn)歷史瀏覽的回潮及其它操作。


    |----------------------------------------------------------------------------------------|
                               版權(quán)聲明  版權(quán)所有 @zhyiwww
                引用請(qǐng)注明來(lái)源 http://www.tkk7.com/zhyiwww   
    |----------------------------------------------------------------------------------------|
    posted on 2006-07-05 10:59 zhyiwww 閱讀(612) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): wml
    主站蜘蛛池模板: 美女视频黄免费亚洲| 国产男女爽爽爽免费视频| 国产成人精品亚洲2020| 亚洲嫩草影院在线观看| 亚洲国产超清无码专区| 亚洲日本视频在线观看| 亚洲一区二区三区四区视频| 亚洲国产精品午夜电影| 亚洲人成电影在线观看青青| 亚洲H在线播放在线观看H| 日韩亚洲国产高清免费视频| 国产成人亚洲综合一区| 久久精品国产亚洲av天美18| 婷婷亚洲综合一区二区| 人妖系列免费网站观看| 国产成人无码免费网站| 国产啪精品视频网站免费尤物| 久久99毛片免费观看不卡| 最近中文字幕mv免费高清在线 | 久久久久亚洲精品日久生情| 亚洲精品一区二区三区四区乱码| 亚洲制服丝袜一区二区三区| 亚洲一区二区三区国产精华液| 狠狠入ady亚洲精品| 一级女人18片毛片免费视频| 成人黄网站片免费视频| 57pao一国产成视频永久免费| 91视频国产免费| 国产一级一片免费播放| 亚洲国产一二三精品无码| 亚洲高清不卡视频| 国产亚洲精品AAAA片APP | 久久久无码精品亚洲日韩京东传媒 | 黄页网站免费观看| 又粗又硬又大又爽免费视频播放| 亚洲人午夜射精精品日韩| 久久亚洲AV午夜福利精品一区| 亚洲av永久无码嘿嘿嘿| 日韩一级片免费观看| 青青草原1769久久免费播放| 青青青免费国产在线视频小草|