-
1. 簡(jiǎn)單說WML代表什么?
WML代表“Wireless Markup Language”。WML就是無線標(biāo)記語(yǔ)言(Wireless Markup Language),內(nèi)置于移動(dòng)設(shè)備中的微型瀏覽器能夠解釋這種標(biāo)記語(yǔ)言。雖然它和HTML語(yǔ)言很相像,但WML其實(shí)是XML的一個(gè)應(yīng)用子集。
-
2. 什么是WML?
WML代表Wireless Markup Language,就象HTML對(duì)普通的Web瀏覽器一樣。有人說它是基于XML,但是更準(zhǔn)確地說WML是XML的一個(gè)應(yīng)用。雖然在語(yǔ)法上和HTML相似,但更多的是XML。如果準(zhǔn)備從HTML到WML,但是沒有任何的XML知識(shí),將會(huì)發(fā)現(xiàn)WML“非常”嚴(yán)格。就像HTML,WML被讀取并且通過WAP設(shè)備中的瀏覽器解釋,然后顯示在屏幕上。對(duì)于WAP設(shè)備,瀏覽器,或者用戶代理,通常叫做微型瀏覽器。微型瀏覽器的功能是受到WAP設(shè)備的限制的。
為什么使用WML而不是使用廣泛的HTML原因是由于WAP的工作方式以及WAP是為一個(gè)“窄小”的無線世界工作的。在Netscape、Opera或者IE上顯示HTML需要更強(qiáng)的計(jì)算能力。計(jì)算能力某種意義上是移動(dòng)設(shè)備中的電能。由于移動(dòng)設(shè)備中的電能是有限的,所以WML在發(fā)送給WAP設(shè)備之前,通常要經(jīng)過轉(zhuǎn)換和壓縮。所以WAP使用的是WML。
讀者也許可能想到WML非常簡(jiǎn)單,甚至不能處理HTML中的多媒體類型。這個(gè)不是問題。標(biāo)記語(yǔ)言(WML、HTML等等)沒有操作設(shè)備的權(quán)限,例如播放聲音或者顯示動(dòng)畫。仔細(xì)地觀察HTML,就會(huì)發(fā)現(xiàn)沒有一個(gè)HTML標(biāo)簽?zāi)軌蝻@示動(dòng)畫或者播放音樂。限制是來自于運(yùn)行標(biāo)記語(yǔ)言的瀏覽器。畢竟在大多數(shù)情況下,是談?wù)撘苿?dòng)電話。但是這個(gè)限制應(yīng)該隨著無線Internet的發(fā)展而逐漸取消。
-
3. WML與HTML有什么區(qū)別?
雖然WML看起來十分像HTML,但是在技術(shù)上兩者的差別還是很大的。WML是為微型瀏覽器所設(shè)計(jì)的HTML的一個(gè)子集。WML的標(biāo)準(zhǔn)定義是基于XML的。
-
4. Phone.com的 HDML和WML有什么區(qū)別?現(xiàn)在有電話支持 HDML嗎?
HDML(Hand-held Devices Markup Language)是Phone.com開發(fā)的。它使得Web頁(yè)面可以在移動(dòng)電話上顯示,其標(biāo)準(zhǔn)的公布先于WAP標(biāo)準(zhǔn)。Motorola、 Neopoint、Qualcomm 等等公司的電話使用Phone.com的瀏覽器,它支持HDML。最新的UP.Browser支持HDML和WAP。
-
5. 為什么使用WML而不是HTML?
首先是WAP協(xié)議要求使用WML??赡芤呀?jīng)有能夠支持HTML的WAP設(shè)備,但是那不是真正的。有一些和無線設(shè)備很像的WAP設(shè)備支持HTML,但它們也不是直接使用HTML(例如:Microsoft Mobile Explorer支持HTML和WML)。MME設(shè)備只是將兩個(gè)分離的部分做到了一起。當(dāng)然也有HTML的變種,例如 iMode 瀏覽器使用Compact HTML。簡(jiǎn)單的說,如果談?wù)揥AP設(shè)備,那么標(biāo)記語(yǔ)言就是WML。
有很多理由說明選擇WML而不是HTML?,F(xiàn)在最重要的一個(gè)原因就是WML與HTML相比需要很小的帶寬。隨著無線技術(shù)的提高,帶寬會(huì)越來越寬。這個(gè)原因可能不再是主要原因,但是在達(dá)到這么高帶寬之前需要許多年的時(shí)間。
另外一個(gè)就是HTML需要相對(duì)來說比較強(qiáng)的處理器。處理器的能力意味著需要更強(qiáng)的能量。在無線設(shè)備中能量來自于電池。而一個(gè)低處理能力的處理器就意味著電池的使用時(shí)間可以更長(zhǎng)。
另外,HTML的確需要一個(gè)很大的顯示屏幕。移動(dòng)電話上的屏幕顯然不能滿足要求。當(dāng)然也許會(huì)有一個(gè)大屏幕的移動(dòng)電話,但是這樣它就離移動(dòng)更遠(yuǎn)(也就是說越不像移動(dòng)電話)。即使iMode支持彩色和一個(gè)類似HTML的顯示,它的尺寸已經(jīng)是你可以方便攜帶的最大尺寸。
-
6. 為什么對(duì)于無線設(shè)備要專門設(shè)計(jì)一種特別的語(yǔ)言才能訪問Internet?
許多年來,HTML標(biāo)記越來越豐富,越來越龐大。此外,瀏覽器對(duì)各種HTML標(biāo)記的支持也大不相同。這種狀況已經(jīng)與當(dāng)初想建立一個(gè)簡(jiǎn)單的標(biāo)準(zhǔn)相背離。
移動(dòng)設(shè)備(例如:移動(dòng)電話)具有小屏幕、內(nèi)存少、缺少方便的輸入設(shè)備和帶寬窄的特點(diǎn)。這種狀況驅(qū)使WAP討論組發(fā)展一種新的為無線設(shè)備所使用的語(yǔ)言,WML就此誕生了。
-
7. 無線設(shè)備也能支持HTML格式嗎?
從技術(shù)的角度上來說答案是肯定的。既然HTML是為普通PC瀏覽器所編寫的,也可以使用微型瀏覽器來瀏覽一個(gè)HTML頁(yè)面,但是可能沒有效果。因?yàn)橐苿?dòng)電話不知道如何顯示該文件。這樣通常導(dǎo)致微型瀏覽器出現(xiàn)混亂。并且HTML頁(yè)面通常都比較大,它會(huì)把移動(dòng)設(shè)備“撐壞”的。
-
8. 如何將HTML轉(zhuǎn)換成WML?
當(dāng)考慮轉(zhuǎn)換HTML時(shí),要想到WML是為小屏幕設(shè)計(jì)的,不可能像HTML那么豐富多采。任何轉(zhuǎn)換都將忽略很多HTML標(biāo)記和許多內(nèi)嵌的腳本。只有一些簡(jiǎn)單的HTML頁(yè)面可以被滿意地轉(zhuǎn)換。轉(zhuǎn)換可以使用工具包如:Spyglass Prism,也可以通過在線的WAP網(wǎng)關(guān)過濾。
-
9. 用什么可以瀏覽到WML頁(yè)面?
首先需要一個(gè)具有WAP功能的手機(jī),例如:Nokia 71110,Ericsson R320等等。用于PC機(jī)的桌面WML瀏覽器也很多,例如:WinWap、WapMan等等。
-
10. 在哪里可以學(xué)到更多的關(guān)于XML的知識(shí)?
可以訪問站點(diǎn):www.w3c.org/xml。在該網(wǎng)站上有許多關(guān)于XML的知識(shí)有詳細(xì)的講解。
-
11. WML的一般語(yǔ)法是什么?
WML非常像XML。和HTML相比其語(yǔ)法規(guī)則更加嚴(yán)格,從而保證當(dāng)微型瀏覽器解析和解釋的時(shí)候不會(huì)有太多的錯(cuò)誤信息。
和HTML一樣,WML使用“<”和“>”組成的格式化標(biāo)簽。許多標(biāo)簽都是以<tag>開頭,以</tag>結(jié)尾。在開頭或者結(jié)尾中包含的部分叫做元素。有些標(biāo)簽叫做空元素,只有標(biāo)簽,沒有內(nèi)容,如:<tag/>。
許多元素有屬性來描述應(yīng)其中還有那些內(nèi)容。屬性名字必須小寫,并且屬性值必須使用雙引號(hào)括起來。有些屬性是必須的,有些是可選的。一般的屬性標(biāo)簽格式就像:<tag attribute1="value">。
變量可以在WML卡片中定義,它們的一般格式是 $(variablename)。
一個(gè)WML頁(yè)面有一個(gè)專門的格式,它必須以XML的文檔聲明為開頭:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM/DTD WML 1.1//EN" "http://www./DTD/wml_1.1.xml">
所有的頁(yè)面中的元素,都必須在<wml>和</wml>標(biāo)簽之間。
-
12. 什么是一個(gè)“deck”?
一個(gè)WML文檔有許多卡片(cards)組成。一個(gè)卡片是一系列完整的WML代碼。這些卡片被稱為一個(gè)“deck”。卡片和“deck”的概念就有點(diǎn)像HTML中的錨標(biāo)記<a name="#achor1">和一個(gè)HTML頁(yè)面。也就是說卡片是“deck”中的一個(gè)組成部分。也可以把“deck”稱為WML中的頁(yè)面。它們之間的關(guān)系可以比做一副撲克牌。整副撲克牌就是deck,而每一張牌就是card。
-
13. 什么是WML的“deck”?
WML的“deck”或者WML文件是指decks。每個(gè)deck包含一個(gè)或者更多的card。每個(gè)deck都以<wml>開始和結(jié)束。并且每個(gè)card都以<card>開頭或者結(jié)束。
當(dāng)WML微型瀏覽器處理WML文件或者deck的時(shí)候,它閱讀整個(gè)deck,并且在deck內(nèi)的各個(gè)card之間進(jìn)行導(dǎo)航。當(dāng)裝入deck的時(shí)候,deck里面所有的card都已經(jīng)裝入到內(nèi)存中,直到瀏覽器裝入另外的deck。
如果熟悉 HTML中的<a name>標(biāo)簽。WML的<card>標(biāo)簽將是非常類似的:
<wml>
<card id="start_menu">
...some code...
</card>
<card id="purchase">
...some more code...
</card>
</wml>
deck和card可以按照這種方式調(diào)用:[deckname][#cardname]。如果deckname省略,那么瀏覽器就會(huì)查找當(dāng)前內(nèi)存里的cardname名字的card。如果使用了deckname和#cardname,那么瀏覽器將裝入deckname的整個(gè)deck,然后跳入到#cardname。這個(gè)和HTML的工作方式很像。
-
14. WML是大小寫敏感的嗎?
是的!要注意WAP 1.1使用小寫的標(biāo)簽。
-
15. 如何顯示一個(gè)美元符號(hào)?
使用兩個(gè)在一起的美元符號(hào)來表示,即“$$”。
-
16. 想顯示價(jià)格的格式該怎么辦?
“$”是一個(gè)特殊的字符,使用“$$”來顯示一個(gè)“$”。
例如:
<p>
The price is $$11.20
</p>
-
17. fieldset標(biāo)簽有什么作用?
編寫WML頁(yè)面的時(shí)候要考慮到設(shè)備的屏幕很小。如果試圖想把一個(gè)大的form在一個(gè)屏幕里面顯示,就要指定那些標(biāo)簽保持在一個(gè)屏幕中。那么fieldset標(biāo)簽將這些標(biāo)簽捆綁在一個(gè)屏幕上。
-
18. postfield標(biāo)簽有什么作用?
postfield標(biāo)簽使允許提交參數(shù)到服務(wù)器端。注意有些早期的模擬器還不支持該標(biāo)簽,這將給開發(fā)工作帶來麻煩!
-
19. WML有類似HTML的<mailto>標(biāo)簽嗎?
沒有。但是你可以使用WML表單和服務(wù)端腳本來得到同樣的效果。
-
20. 無法讓<input/>格式正常工作是怎么回事?
至少Nokia WML Reference沒有講清楚有關(guān)<input/>標(biāo)簽的用法。format參數(shù)控制著用戶輸入數(shù)據(jù)的類型和長(zhǎng)度。
注意到不是所有的WAP 1.1瀏覽器都接受所有的格式化代碼。例如:Nokia 7110就支持得不是很好。Mitsubishi Trium在處理“*f”代碼的時(shí)候有點(diǎn)問題,“*”必須為1或者更大。專門的格式化代碼如下:
-
A
從A到Z的任何大寫字母,沒有數(shù)字或其他字符。
-
a
從a到z的任何小寫字母,沒有數(shù)字和其他字符。
-
N
任何0到9的數(shù)字。
-
X
從A到Z從0到9的任何字符。
-
x
從a到z從0到9的任何字符。
-
M
任何字符,輸入默認(rèn)從大寫開始。
-
m
任何字符,輸入默認(rèn)從小寫開始。
-
*f
(星號(hào))意味著任何數(shù)字(包括0),f是格式的代碼。
-
nf
意味著恰好要輸入的字符個(gè)數(shù)。n從1到9。f是格式代碼。
-
是轉(zhuǎn)義輸出字符。
格式化字符可以組合使用來表示一種特定的格式輸入。但是強(qiáng)制一定的輸入應(yīng)當(dāng)避免在用戶出錯(cuò)的時(shí)候沒有提示信息。如果輸入是不正確的,該填寫的區(qū)域一般仍保持空白,直到讓用戶知道應(yīng)該輸入什么。如果只想輸入數(shù)字,使用“*N”那么將直接轉(zhuǎn)跳到數(shù)字輸入模式。如果只想輸入大寫的字符,使用“*M”轉(zhuǎn)跳到大寫輸入模式?,F(xiàn)舉一些例子:
“N” 只接受一個(gè)數(shù)字字符。
“*N” 接受任何數(shù)字字符。
“NN” 只接受2個(gè)數(shù)字字符,不多不少。
“ANN” 接受一個(gè)大寫字符(沒有數(shù)字),后面跟著兩個(gè)數(shù)字,不多不少。
“X*N” 表示可以接受一個(gè)字符(沒有數(shù)字)后面跟著任意多的數(shù)字字符。
“NNN\-NNN\-NNNN”表示接受美國(guó)的電話號(hào)碼格式,例如:“123-456-1234”。
“2N\:2N\:2N” 表示接受時(shí)間格式,例如:“12:02:34”。
“NNNNNNNNN” 表示接受9個(gè)數(shù)字字符。
“9N” 同樣表示接受9個(gè)數(shù)字字符。
maxlength參數(shù)控制著輸入字符的總個(gè)數(shù)。
-
21. 如何防止一個(gè)空的field?
在大多數(shù)情況下需要知道用戶確實(shí)是輸入了一些內(nèi)容在field中,不能讓這些內(nèi)容為空。這個(gè)可以通過在服務(wù)端的檢測(cè)來完成,也可以通過WML來完成。
在WML中,這個(gè)檢查可以通過合適的格式化代碼來完成,或者使用一個(gè)在input標(biāo)簽中叫做emptyok="false" 的參數(shù)來實(shí)現(xiàn)(只有當(dāng)必須要求用戶輸入的時(shí)候才使用)。如果使用了value="something" 或者value="" 用戶仍然可以發(fā)送空的fields。
以下的行將接收任何值到username field, 甚至用戶將整個(gè)field清空。另外field中沒有任何東西,也能夠提交form。
<input name="username" type="text" value="things" format="*M"/>
除了用戶將整個(gè)field清空,以下的行將接收任何值到username field。如果field是空的,他將不能提交form,。
<input name="username" type="text" value="things" format="M*m"/>
以上的應(yīng)用是針對(duì)大多數(shù)的瀏覽器。在Nokia 7110 ,emptyok參數(shù)可以有同樣的效果:
<input name="username" type="text" value="things" format="*M" emptyok="false"/>
-
22. 使用option標(biāo)簽的時(shí)候,無法一屏顯示完該怎么辦?
許多WAP電話的顯示屏幕只能顯示三到四個(gè)選項(xiàng)。按以下的方法分割option字段就可以輸入更多的選項(xiàng)。
<select title="longselectlist">
<optgroup title="option1">
<option>option1-1</option>
<option>option1-2</option>
<option>option1-3</option>
</optgroup>
<optgroup title="option2">
<option>option2-1</option>
<option>option2-2</option>
<option>option2-3</option>
</optgroup>
<optgroup title="option3">
<option>option3-1</option>
<option>option3-2</option>
<option>option3-3</option>
</optgroup>
</select>
-
23. 想有一個(gè)永久的BACK在屏幕的右下方。有些好像是自動(dòng)的,若沒有,該怎么做?
可以加入以下代碼。
<do type="prev" label="Back">
</prev>
</do>
更好的是使用template。
……
<template>
<do type="prev" label="Back" name="back">
</prev>
</do>
</template>
……
-
24. WAP支持列表嗎?
是的,WAP1.1支持列表和相關(guān)的標(biāo)記。
-
25. 可以在WML中使用表單嗎?
可以。但是Nokia 7110在顯示表單的時(shí)候有些問題。
-
26. WML支持什么樣的表單提交方式?
WML支持GET和POST方式。但是Nokia 7110在處理GET方式的時(shí)候有些問題。
-
27. WML中如何增加參數(shù)到URL字符串中?
和HTML的工作方式很像,如下所示:
……
www.someserver.com/someurl?parameter1=value1¶meter2=value2
……
唯一的不同是將“&”變成“&”。
-
28. 如何從WML向ASP傳送數(shù)據(jù)?
假設(shè)有一個(gè)ASP叫做“myasp.asp”,并且有一個(gè)WML變量叫做 “wmlvar”。當(dāng)發(fā)出請(qǐng)求“myasp.asp?wmlvar=something”,可以使用下面的方法得到變量的內(nèi)容。
dim aspvar
aspvar = Request.QueryString("wmlvar")
ASP變量“aspvar”將包含字符串“something”。當(dāng)然ASP變量也可以與WML變量同名。
-
29. 如何讓W(xué)ML頁(yè)面自己更新?
有過Web經(jīng)驗(yàn)的人喜歡使用:
<meta http-equiv="refresh" content="1;http:///">
來強(qiáng)制瀏覽器自動(dòng)更新。
雖然在WAP中也支持一些META標(biāo)簽,一個(gè)更好的辦法是使用<ontimer>標(biāo)簽。
以下的代碼顯示了如何自動(dòng)轉(zhuǎn)跳到另外一個(gè)卡片:nextdeck.wml。
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www./DTD/wml_1.1.xml">
<wml>
<card id="splashscreen" ontimer="nextcard.wml">
<timer value="40"/>
<p>Please wait for the timer to run out...</p>
</card>
</wml>
下面的代碼將強(qiáng)制瀏覽器在一段時(shí)間后重新裝入同一個(gè)卡片。這個(gè)頁(yè)面叫做loop.wml。
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www./DTD/wml_1.1.xml">
<wml>
<card id="loop" ontimer="loop.wml">
<timer value="40"/>
<p>This text will be shown over and over again...</p>
</card>
</wml>
注意必須避免瀏覽器可能要使用的cache機(jī)制。
-
30. WML頁(yè)面的最大大小是多少?
1397 bytes/deck
-
31. WML頁(yè)面的限制是多少?
由于WAP設(shè)備只有很少的內(nèi)存,因此就存在著一個(gè)最大的WML deck的界限。這里沒有一個(gè)絕對(duì)的標(biāo)準(zhǔn),根據(jù)瀏覽器的不同而不同。表10-5列出了幾種瀏覽器的限制。
注意WML deck的大小是指編碼壓縮成二進(jìn)制格式下的大小,一個(gè)沒有壓縮的WML deck可能很大,但是壓縮后可能比較小。
表10-5 不同瀏覽器的限制
瀏覽器
|
壓縮后的WML大小限制
|
UP.Browser 3.2
|
1492 bytes
|
UP.Browser 4.x
|
2048 bytes
|
Ericsson R320
|
大約3000 bytes
|
Ericsson R380
|
大約3500 bytes
|
Ericsson MC218
|
多于8000 bytes
|
Nokia 7110
|
1397 bytes
|
-
32. 如何防止對(duì)WML頁(yè)面的非法訪問?
WAP可以防止通過HTTP協(xié)議對(duì)文件和目錄的非法操作。注意:有些WAP模擬器和虛擬的WAP瀏覽器可能不支持這個(gè)特點(diǎn)。在這個(gè)時(shí)候是不知道是否有可能使用其他類型的驗(yàn)證方式。
為了使用這種方式,用戶的HTTP服務(wù)器必須支持這個(gè)特點(diǎn),其實(shí)大多數(shù)服務(wù)器都支持。當(dāng)一個(gè)WAP瀏覽器請(qǐng)求一個(gè)URL,它將提醒用戶輸入用戶名和密碼。這些都轉(zhuǎn)換成無法直接閱讀的字符,但不是加密。也就是說如果網(wǎng)絡(luò)上有人在使用合適的設(shè)備監(jiān)聽,那么用戶名和密碼將被泄露。
這個(gè)特點(diǎn)在Apache文檔中有詳細(xì)的說明,但是文檔的描述很弱,這里有如何在Apache HTTP服務(wù)器上配置的說明:
要保證Apache已經(jīng)配置過,使得一個(gè)名叫.htaccess的文件可以覆蓋全局的操作配置。操作配置既可以在每個(gè)目錄使用分離的文件,也可以在全局的access.conf中。但是在這個(gè)例子中,我們將集中在.htaccess文件上。并且檢查AllowOverride的設(shè)置。這個(gè)必須設(shè)置到AuthConfig,那樣意味著Apache在目錄中尋找.htaccess文件,并且使用該文件中的規(guī)則。記住在配置后要重新啟動(dòng)Apache服務(wù)器。
下一步是在目錄里放置需要保護(hù)的文件叫做.htaccess。(注意點(diǎn)代表文件名的開頭)。一個(gè).htaccess文件的基本內(nèi)容如下:
AuthType Basic
AuthName "WAP FAQ Authentication Demo"
AuthUserFile /home/httpd/html/wap-faq/extras/auth/auth.passwd
require valid-user
AuthType設(shè)置是指定驗(yàn)證的類型,AuthName指定領(lǐng)域,AuthUserFile指定口令文件的位置,require指定所想得到的操作。在這個(gè)例子中,任何在口令文件中的用戶都有一個(gè)正確的口令。
現(xiàn)在需要產(chǎn)生一個(gè)口令文件,Apache使用一個(gè)叫做 .htpasswd來完成這個(gè)特殊格式文件的生成。運(yùn)行程序如下:
#htpasswd /home/httpd/html/wap-faq/extras/auth/auth.passwd demo
New password:
Re-type password:
Adding password for user demo
注意:在第一次創(chuàng)建文件的時(shí)候,必須使用“-c”選項(xiàng)。
現(xiàn)在加入了一個(gè)叫做“demo”的用戶,并且輸入了他的密碼兩次。考慮到安全的原因,口令文件不應(yīng)該放在文件根目錄下。筆者在這里只是做演示。
現(xiàn)在最后就是測(cè)試,筆者建議使用HTML瀏覽器。輸入含有想保護(hù)的URL目錄的地址,一個(gè)對(duì)話框就會(huì)彈出來詢問用戶名和口令。如果一切順利,就可以使用WAP瀏覽器來測(cè)試了。
一個(gè)目錄保護(hù)的例子在這個(gè)服務(wù)器上,用戶名是demo,口令是demo。可以使用HTML或者WML瀏覽器來做測(cè)試。
這個(gè)例子同樣可以通過輸入http://wap./demos.html來得到。
或者只要點(diǎn)到保護(hù)的區(qū)域:
http://wap./wap-faq/extras/auth/
或者查看.htaccess文件。
最后點(diǎn)擊查看口令文件的內(nèi)容。
-
33. 怎么使用非拉丁字符?
在文件開頭加上:
encoding="ISO-8859-1"?
或者:
encoding="UTF-8"?
ISO-8859-1和UTF-8編碼支持更多的字符。
-
34. 一些特殊字符破壞了代碼和連接該怎么辦?
錨/鏈接有時(shí)候包含了一些字母和數(shù)字之外的字符。典型的如:“~”(波浪號(hào))和“&”(與號(hào))。如果根據(jù)書編程,就應(yīng)該告訴WAP瀏覽器使用的是什么字符集。這個(gè)在XML定義中可以完成:
<?xml version="1.0" encoding="iso-8859-1"?>
“iso-8859-1”是Latin字符集。這個(gè)應(yīng)該在大多數(shù)場(chǎng)合下能滿足需要。但是,還是需要對(duì)那些轉(zhuǎn)義字符進(jìn)行轉(zhuǎn)義。即使指定了字符集,也是沒有用處的。
字符實(shí)體是某些特殊字符的標(biāo)準(zhǔn)名字,例如:“&”就是“&”。
大多數(shù)瀏覽器在反編碼名字實(shí)體的時(shí)候會(huì)出現(xiàn)問題,例如Nokia列出了7個(gè)兼容的名字實(shí)體:“quot”、“amp”、“apos”、“lt”、“gt”、“nbsp”和“shy”。只有在使用它們的十進(jìn)制代碼的時(shí)候(在上述所說的Link中),瀏覽器可以顯示幾乎所有字符。如果Nokia的瀏覽器接收到無法支持的實(shí)體名,它就會(huì)崩潰。
通過使用HTML或者WML瀏覽器(在HTML格式下,雖然不是很好),可以操作在線的實(shí)體名列表,該列表在http://wap./wap-faq/apps/charentref.html。
這個(gè)表同樣有一個(gè)例子在:http://wap./demos.html。
第一步,選擇將要使用的字符集,Latin1,Latin1 Mathematical和Greek symbols,最后是Latin1 Markup symbols。注意到列表被分割了,是由于deck的限制。真正的列表顯示了實(shí)體名,實(shí)體的十進(jìn)制值和真正的符號(hào)。從這里就可以看到哪個(gè)字符瀏覽器可以顯示。
注意上面的在線列表,不要設(shè)置為“charset=iso-8859-1”(真正的Latin1),那是個(gè)XML定義。
-
35. 可能在WML頁(yè)面上顯示一個(gè)可選的Link嗎?當(dāng)用戶選擇后就可以直接撥號(hào)?
現(xiàn)在不行。但是一旦支持WTAI的設(shè)備出現(xiàn),那么就可能實(shí)現(xiàn)。