天天看點

XHTML MP 對比 WML 的特征

xhtml mobile profile簡稱xhtml MP

是用來開發基于wap 2.0的應用的.當然這要求移動裝置支援的微型浏覽支援wap 2.0.

如果想支援使用wap 1.1,.1.2,1.3的使用者,可以使用wml.

不過,有些微型浏覽器是雙模的,即支援wml,也支援xhtml MP

如果使用asp.net 可以開發這樣的應用,可以征對不同的浏覽器輸出不同的标記語言(一次開發),如輸出xhtml或wml.

但開發資料太少,不好掌握.特别是對應不同的手機時,尤其如此,有時會讓你有想撞牆的沖動.

WML(Wireless Markup Language - 無線标記語言)這種描述語言同我們常聽說的HTML語言同出一家,都屬于X ML語言這一大家族。HTML語言寫出的内容,我們可以在我們的PC機上用IE或是Netscape等浏覽器進行閱讀,而 WML語言寫出的檔案則是專門用來在手機等的一些無線終端顯示屏上顯示,供人們閱讀的,并且同樣也可以向使用者提供人機互動界面,接受使用者輸入的查詢等資訊,然後向使用者傳回他所想要獲得的最終資訊。

現在用的還是wml多,xhtml和wml你都可以看做是XML,都是一組符合XML規範的标簽組成了一個資料檔案,目前的WML的手機覆寫率很廣,而且從伺服器到營運商再到手機終端的浏覽器解析到展示這些步驟是比較複雜的,從營運商到手機終端一般會有一個壓縮和轉換的過程,具體可以找資料參考一下,而xhtml在手機上覆寫沒WML高,其原理是類似IE浏覽HTML網頁相似。

xhtml是符合xml規範的html,是html想xml過渡的版本,将來html要被xml取代的,wml是移動版的。

一些 WML 1.x 中可用的特征在 XHTML MP 中已經不存在了. 在這一部分中, 你将學到 WML 1.x 與 XHTML MP 之間的這些差別. 這一部分對于那些熟悉 WML 但對于 XHTML MP 來說是新手的人, 或者那些想把他們的移動網際網路應用從 WML 1.x 遷移到 XHTML MP的人來說, 特别有用.

盡管失去了 WML 的一些特征, 在 XHTML MP 中還是有實作類似效果的方法的. 應該注意到, WAP 2.0 對 WML 1.x 是後向相容的, 這就意味着 WAP 2.0 移動裝置能夠顯示 WML 1.x 文檔. 如果你必須要使用一個在 WML 中有效但在 XHTML MP 中無效的特征, 那麼你可以考慮用 WML 1.x 開發你的 WAP 應用.

這些是 XHTML MP 所丢失的主要的 WML 語言的特征:

XHTML MP 不支援 Deck 與 Card

XHTML MP 不支援計時器

XHTML MP 不支援事件

XHTML MP 不支援變量

XHTML MP 不支援用戶端腳本

XHTML MP 不支援對軟鍵 (accesskey) 程式設計

XHTML MP 不支援 <u> 标簽

XHTML MP 的輸入字段不支援格式化屬性

XHTML MP 不支援用錨連結發送資料

XHTML MP 不支援 Deck 與 Card

WML 中的 <deck> 和 <card> 元素在 XHTML MP 中已經不存在了. 在 WML 中, 一個檔案可以包含一張或多張 card. 它們共同形成了一個 deck. 一個 deck 中所有的 card 都會被一次下載下傳到無線裝置上. WAP 浏覽器一次顯示一張 card , 你可以通過錨連結去其它卡片. 通過使用 deck 和 card, 與伺服器的互動得以減少. 進而可能會有很大的性能提高, 因為對無線裝置來說, 每次對伺服器的請求的滞後性很高.

要在 XHTML MP 中達到類似的功能, 你可以把消息分成多個部分 (多個文檔放到一個 HTTP 回報中). 另一種方式是通過利用目标錨 (目标錨放到頁面中的各個位置, 并且将連結定義為流動到相應的目标錨. 更多細節将稍後在 "到目前 XHTML MP 頁面的某個地方" 中提到).

XHTML MP 不支援計時器

要在 WML 中使用計時器, 你可以用 <timer> 标簽和 ontimer 事件. <timer> 标簽和 ontimer 事件在 XHTML MP 中都不被支援.

要在 XHTML MP 中實作類似的功能, 嘗試一下 HTTP 重新整理, 像這樣:

<head><meta http-equiv="refresh" content="5;URL=http://www.phparch.cn/" />...</head>

在上面的 XHTML MP 例子中, <meta> 元素告訴 WAP 浏覽器10秒後轉到 URL "http://www.phparch.cn". 要注意的是 WML 計時器隻有在使用者前進到卡片 (card) 時才會開啟, 而 HTTP 重新整理計時器無論使用者何時到達 XHTML MP 頁面都會開啟.

關于 HTTP 重新整理的更多細節将在稍後的 "XHTML MP 中的間歇性重新整理" 中提到.

XHTML MP 不支援事件

XHTML MP 不支援事件. WML 支援四種事件: ontimer, onenterbackward, onenterforward 和 onpick. 就像在上一部分讨論的那樣, HTTP 重新整理可以模拟 ontimer 事件. 對于其它事件類型, 在 XHTML MP 中沒有替代方案. 如果你的移動網際網路浏覽應用必須用到它們, 那麼你不得不考慮用 WML 1.x 取代 XHTML MP.

XHTML MP 不支援變量

在 WML 中, 你可以聲明變量并對其指派. WML 的變量都具有全局範圍, 也就意味着你可以在任何 deck 與 card 标簽中使用它們. 在 WML 中常見的對變量的使用是用其存儲使用者輸入的資料以免其稍後還要再次輸入.

在 XHTML MP 中你無法使用變量. 替代方案是把所有的處理放在伺服器端進行. 例如, 如果你想把使用者在某一 XHTML MP 頁面上輸入的資料共享到其它 XHTML MP 頁面, 就要把資料發送到并存儲在伺服器上. 然後伺服器可以在必要的時候把使用者資料嵌入到 XHTML MP 标記中, 并将其發送到無線裝置.

XHTML MP 不支援用戶端腳本

在 WML 中, 你可以用一種叫作 WMLScript 的腳本語言, 該語言與 JavaScript 類似. WMLScript 在 WML 中的一種常見應用是驗證使用者輸入的資料.

對于 XHTML MP, 用戶端腳本目前是無效的. 替代方案是把所有的處理放在伺服器端進行. 例如, 可以把使用者資料發送到伺服器端處理, 而不是在無線裝置上驗證使用者資料. 如果使用者資料格式有誤, 超出了有效範圍, 或者使用者忘記輸入某些字段, 伺服器會引導使用者去一個 XHTML MP 頁面來糾正資料.

将來的移動裝置将支援一種叫作 ECMAScript 移動概要 (ESMP) 的用戶端腳本語言, 該語言被設計用于 XHTML MP 之中. 它支援所有 WMLScript 功能.