WAP协议研究笔记--wbxml2代码导读
电脑术语解释大全
彩信(MMS)和WAP浏览器是WAP协议的两大主要应用。WAP协议有点复杂,也算是SmartPhone中的核心技术之一吧,它包括WDP/WTP/WSP这一套传输协议,也包括WML/和SMIL这样的内容表示协议。去年花了一点时间去研究它,后来该任务取消了,所以没有搞得太透彻。今年要真正使用了,现在继续研究,主要侧重于它的实现。这里记录一些研究笔记,本文是关于wbxml解析器的。
WBXML是WAP Binary XML Content Format的简称。WML和HTML有些类似,但针对手持设备做了些特殊处理,只支持一些最基本的功能,同时加了一些特殊的元素。像大多数标记语言一样,WML的tag本身占了不少空间。为了充分利用有限的带宽资源,wapforum提出了WBXML规范,它实际上相当于一种简单的压缩算法。
这种算法比较简单,它给常用的字符串指定一个单字节的ID,这些字符串包括TAG、属性和属性的值等等,比如<anchor>用0x22表示,这样8个字节压缩成了1个字节。而TAG的结束统一用0x01表示,进一步对数据进行压缩。这种压缩算法简单,尽管它只针对标记语言本身,而不能针对网页内容,但由于标记语言在文件中所占比例较大,所以压缩率仍然十分可观。下面是一个简单的例子(压缩前后):
<wml>
<card id="abc" ordered="true">
<p>
<do type="accept">
<go href="http://xyz.org/s"/>
</do>
X: $(X)<br/>
Y: $(Y)<br/>
Enter name: <input type="text" name="N"/>
</p>
</card>
</wml>
02 08 6A 04 'X' 00 'Y' 00 7F E7 55 03 'a' 'b' 'c' 00
33 01 60 E8 38 01 AB 4B 03 'x' 'y' 'z' 00 88 03
's' 00 01 01 03 ' ' 'X' ':' ' ' 00 82 00 26 03 ' ' 'Y'
':' ' ' 00 82 02 26 03 ' ' 'E' 'n' 't' 'e' 'r' ' ' 'n'
'a' 'm' 'e' ':' ' ' 00 AF 48 21 03 'N' 00 01 01 01 01