無線標(biāo)記語言(WML)基礎(chǔ)之WML基本知識

相關(guān)專題: 無線

1、WML的字符集及編碼

WML使用XML的字符集,即通用字符集ISO/IEC-1062.,也即統(tǒng)一字符編碼標(biāo)準(zhǔn)Unicode 2.0。

  同時,WML還支持其他系列的字符集子集,例如UTF-8、ISO-8859-1或UCS-2等。其中:

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

ISO-8859-1字符集是國際標(biāo)準(zhǔn)化組織ISO(International Standardization Organization)制定的ACSII字符集的擴(kuò)展集,能夠表示所有西歐語言的字符。與ISO Latin-1一樣,ISO-8859-1與Windows環(huán)境中普遍使用的美國國家標(biāo)準(zhǔn)協(xié)會ANSI(American National Standards Institute)的字符集極為類似,絕大多數(shù)情況下無需區(qū)分。在不特別指明的情況下,HTTP協(xié)議均使用ISOLatin-1字符集。因此,為了WML頁面中表示非ACSII(non-ACSII)字符,開發(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)編碼處理。一般說來,WML文檔的字符編碼是需要轉(zhuǎn)換為另外的編碼格式,以與WAP用戶的手機(jī)瀏覽器所用字符標(biāo)準(zhǔn)相適應(yīng),否則,手機(jī)瀏覽器就無法顯示W(wǎng)ML頁面中的字符。然而,編碼轉(zhuǎn)換時可能會丟失一些字符信息,所以,如果在用戶端進(jìn)行WML文檔的編碼轉(zhuǎn)換,那么就可能導(dǎo)致某些結(jié)果信息丟失而不能被用戶所瀏覽。因此,如有必要,我們應(yīng)當(dāng)盡量在WML頁面?zhèn)魉偷接脩魹g覽器之前完成編碼轉(zhuǎn)換。

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

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

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

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

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

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

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

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

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

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

注意:指定漢字字符集的形式和方法可能因為開發(fā)工具或WAP手機(jī)的不同而不同。

3、變量

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

定義變量的語法格式為:

$identifier
$(identifier)
$(identifier:conversion)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

###adv###  2、WML核心數(shù)據(jù)類型

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

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

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

4)id型。專門用于定義WML元素名稱的數(shù)據(jù)類型。

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

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

除了NMTOKEN型數(shù)據(jù)外,WML其他3種數(shù)據(jù)都必須以文本形式即加上引號進(jìn)行定義。我們關(guān)心的問題是,這些類型的數(shù)據(jù)可以表示哪些數(shù)據(jù)值呢?或者說,它們所表示的數(shù)據(jù)值的性質(zhì)是什么呢? 事實上,WML數(shù)據(jù)只在性質(zhì)上可以是長度(Length)、宏變量(Vdata)、流(Flow)、內(nèi)行(Inline)、布局(Layout)、文本(Text)、超鏈(Href)、布爾值(Boolean)、數(shù)據(jù)(Number)或增強(qiáng)方式(Emphasis)。

6、卡片與卡片組

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

7、卡片組模板

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

8、WML與URL、程序段錨點

我們知道,環(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)容類型,如HTML、WML,提供WWW資源的內(nèi)容形式及標(biāo)準(zhǔn)。WML沿用了這些規(guī)范,并擴(kuò)大了URL使用的范圍。在WML中,不僅超連接、文件路徑及文件名可以作為URL處理,卡片名、宏變量名及各種內(nèi)部資源名等也可作為URL處理。

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

9、瀏覽器操作歷史

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

 

   來源:Vlan9.com
微信掃描分享本文到朋友圈
掃碼關(guān)注5G通信官方公眾號,免費領(lǐng)取以下5G精品資料
  • 1、回復(fù)“YD5GAI”免費領(lǐng)取《中國移動:5G網(wǎng)絡(luò)AI應(yīng)用典型場景技術(shù)解決方案白皮書
  • 2、回復(fù)“5G6G”免費領(lǐng)取《5G_6G毫米波測試技術(shù)白皮書-2022_03-21
  • 3、回復(fù)“YD6G”免費領(lǐng)取《中國移動:6G至簡無線接入網(wǎng)白皮書
  • 4、回復(fù)“LTBPS”免費領(lǐng)取《《中國聯(lián)通5G終端白皮書》
  • 5、回復(fù)“ZGDX”免費領(lǐng)取《中國電信5GNTN技術(shù)白皮書
  • 6、回復(fù)“TXSB”免費領(lǐng)取《通信設(shè)備安裝工程施工工藝圖解
  • 7、回復(fù)“YDSL”免費領(lǐng)取《中國移動算力并網(wǎng)白皮書
  • 8、回復(fù)“5GX3”免費領(lǐng)取《R1623501-g605G的系統(tǒng)架構(gòu)1
  • 本周熱點本月熱點

     

      最熱通信招聘

      最新招聘信息