天天看点

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 功能.