用于WAP的标记语言就是WML(Wireless Markup Language)WML的语法跟XML一样WML是XML的子集HTMLXML和WML的文件有很多相似之处这样网页开发者在过去年中所学的东西今天依然适用 WML页面文件的后缀是 *WML就象HTML的 *HTML后缀 XML规定定义了一个规范的XML文件的规格任何违反这个规定的WML文件会出错WML文件通常使用XML解释器起来解释 建立网页制作环境WML文件本身就是文本文件所以编辑不成问题顺手的编辑器都可以用 当然由于目前的浏览器还都不能显示WML页面而我们又不能总在手机上进行测试(速度太慢)所以需要模拟器现在象NOKIAERICSSONMOTOROLA等手机制造商都生产了相应的产品你只要下载就行了当然除了模拟器以外还需要图形制作转换器(用来制作WAP格式的图形文件)字符转码器(汉字<=>UNICODE)等等本站工具及论坛页面均有说明 WML文件结构WML的页面通常叫做桌面(DECK)由一组互相链接的卡片(CARD)组成当移动电话访问一个WML页面的时候页面的所有CARD都会从WAP服务器下载到设备里CARD之间的切换由电话内置的计算机处理不需要再到服务器上取信息了CARD里可以包含文本标记链接输入控制任务(TASK)图像等等CARD之间可以互相链接 文档的实体包含在标记中文档里每个CARD又包含在标记中然后实际的文字段落则包含在
标记中 简单例子 Hello world! 显示结果如下 HELLO Hello World! DECK里面各个组成部分的具体解释在本教程的其他部分有说明 WML字符集WML是XML的子集继承了XML的字符集设置WML文档缺省的字符集是UTF 要显示中文有两种办法最简单的办法就是在文档头使用encoding即把第一行改为 然而令人丧气的是这种方法有些手机和模拟器并不支持(将来会的)所以目前第种方法更普遍不改变字符集设置但是在写中文的时候采用UNICODE代表中文字符如 通讯录 代表 通讯录 WML元素标记(Tag)和属性WML的主要内容是文本由于标记会降低与手持设备的通讯速度所以WML标准里仅仅使用了很少一部分用于表格和图像的的标记几乎都被排除了 与XML一样在WML语言中所有元素都放在符号"<" 和 ">"中并且包含一个开始标志一个结束标志和一个内容标志或者使用自身结束的控制标记就象这样 内容 例如 Hello World! 或 例如 和 WML同样支持在标志中标出属性属性是标志的附加信息与元素的内容不一样它并不在屏幕上显示出来属性通常在元素的开始标志后指定如上面最后一个例子 由于WML是XML的一种应用因此所有的WML标记和属性都是大小写敏感的(跟完全不同)而且所有的标记都必须正确地结束WML要求属性的值必须放在双引号或单引号内单引号可放在属性标志内或双引号内字符亦可作为属性的值 WML注释XML支持这样的注释格式 这些注释在浏览器中并不显示出来 WML不支持嵌套元素注释 链接(URL) WML外部引用方式跟HTML相同 或 #login 内部引用如果next是当前DECK中的一个CARD时可以用这种方式 #next 提供链接功能的WML元素有个(参见任务)和(参见事件) CDATA XML支持CDATA的概念以显示不需要解释的文本下面的例子使用CDATA元素在WML页面中显示WML命令文本 ] ]> 浏览器窗口将显示如下内容: this is data 有了上面的基础,相信大家已经能够做不少事情了。tW.wIngwiT.CoM现在我们来深入一下,看看如何提高性能和网络传输效率。首先,需要介绍一下(RFC2616)的基础知识。当然,如果你已经很熟悉了,可以跳过第一部分。 一、HTTP 1.1的简要介绍HTTP 1.1是一个基于文本的互联网实体信息交互主流协议,这里的实体可以是WAP兼容浏览器之类的用户终端,可以是WAP网关之类的代理服务器,也可以是Java servlet之类的源服务器程序。它们之间的交互信息就是两大类:客户端对服务器端的请求(request)和服务器端对客户端的响应(response)。一次完整的交互包括一个请求和对它的响应。 所有的请求和响应都采用[RFC822]中定义的标准互联网消息格式,框架如下:* 消息定义 * 没有或多个消息头* CRLF(空行回车) * 可选的消息本体 其中消息定义不分指定了发送消息的类型。请求和响应都可以包含多个消息头,用来进一步或者重新定义用户终端和服务器之间的交互。CRLF仅仅用来将信息定义和消息本体分开。 1、请求在消息定义部分可以这样定义请求: 请求类型 URL HTTP/1.1 其中请求类型可以是下面的一种: ①. OPTION:返回请求者和相应者之间可以使用的通信选项,主要用来检测服务器处理能力;②. GET:获得以URL标示的文件内容或者程序执行结果。服务器根据文件名后缀判断服务内容,比如该URL是静态文本还是一个程序;③. HEAD:除了不返回响应的信息本体以外,得到的是跟GET一样的信息。一般用来测试链接的有效性、可达性和近期修改;④. POST:把消息本体中的消息发送到一个URL或者其他类似的服务器端定义行为。通常用来提交一个HTML表单或者一些数据操作活动; ⑤. PUT:把消息本体中的消息发送到一个URL,跟POST类似,但不常用;⑥. DELETE:删除URL指定的资源;⑦. TRACE:调用一个远程应用层请求消息回路。发出这个消息的用户终端除了收到原来的消息内容以外,还得到消息在Internet上的传送路径。 最常用的请求类型--也是我们在处理WAP应用时最关心的--是GET和POST。假设有一个WML文档,我们用UP的浏览器去浏览的话,就会向服务器发出如下GET请求: GET www.itsalon.com/wap/index.wml HTTP/1.1 accept-charset: UTF-8 accept-language: ch accept: text/vnd.wap.wml, */*, image/bmp, text/html user-agent: UP.Browser/3.1-UPG1 UP.Link/3.2 host: www.itsalon.net …… 其中粗体的部分是HTTP消息头,这里我们忽略了一些与我们关系不大的消息头。 accept-charset: 用户终端支持的字符集 accept-language: 用户终端目前使用的语言 accept: 用户终端可以接受的MIME文件类型 user-agent: 用户终端供应商提供的终端描述信息 host: 请求信息发送到的域名 2、响应响应的消息定义部分一般是这样的:HTTP/1.1 状态码状态描述在[RFC2616]中定义了近40种不同的状态码(分成5组)。其中最常见的是3个: 200 OK 401 Unauthorized 404 Not Found 继续上面那个例子,如果该URL合法的话,服务器的响应会是这样的: HTTP/1.1 200 OK Server: www/5.0 Date: Fri, 26 Oct 2000 12:15:23 GMT Connection: Keep-Alive Content-Length: 1211 Content_Type: text/vnd.wap.wml Last-Modified: Mon, 22 Oct 2000 18:19:24 GMT |