WML的基本情况(转)

用于wap的标记语言就是wml(wireless markup language)。
  wml的语法跟xml一样,wml是xml的子集。
  html、xml和wml的文件有很多相似之处,这样网页开发者在过去10年中所学的东西今天依然适用。
wml页面文件的后缀是 *.wml,就象html的 *.html后缀。
xml规定定义了一个规范的xml文件的规格。任何违反这个规定的wml文件会出错。wml文件通常使用xml解释器起来解释。

建立网页制作环境
  wml文件本身就是文本文件,所以编辑不成问题,顺手的编辑器都可以用。
当然,由于目前的浏览器还都不能显示wml页面,而我们又不能总在手机上进行测试(速度太慢),所以需要模拟器。现在象nokia、ericsson、motorola等手机制造商都生产了相应的产品,你只要下载就行了。当然除了模拟器以外,还需要图形制作转换器(用来制作wap格式的图形文件)、字符转码器(汉字<=>unicode)等等,本站工具及论坛页面均有说明。

wml文件结构
  wml的页面通常叫做桌面(deck),由一组互相链接的卡片(card)组成。当移动电话访问一个wml页面的时候,页面的所有card都会从wap服务器下载到设备里。card之间的切换由电话内置的计算机处理,不需要再到服务器上取信息了。card里可以包含文本、标记、链接、输入控制、任务(task)、图像等等。card之间可以互相链接。

  文档的实体包含在...标记中,文档里每个card又包含在...标记中,然后实际的文字段落则包含在

...

标记中。

简单例子:

<?xml version="1.0"?>
br />  "http://www.wapforum.org/dtd/wml_1.1.xml">



 


 hello world!
 




显示结果如下:

------ hello ------



hello world!

deck里面各个组成部分的具体解释在本教程的其他部分有说明。

wml字符集
  wml是xml的子集,继承了xml的字符集设置。wml文档缺省的字符集是utf-8。
要显示中文,有两种办法。最简单的办法就是在文档头使用encoding,即把第一行改为:

<?xml version="1.0" encoding="gb2312"?>

  然而令人丧气的是,这种方法有些手机和模拟器并不支持(将来会的),所以目前第2种方法更普遍:不改变字符集设置,但是在写中文的时候采用unicode代表中文字符,如:

通讯录

代表:
通讯录

wml元素:标记(tag)和属性
  wml的主要内容是文本,由于标记会降低与手持设备的通讯速度,所以wml标准里仅仅使用了很少一部分。用于表格和图像的的标记几乎都被排除了。

  与xml一样,在wml语言中,所有元素都放在符号""中,并且包含一个开始标志、一个结束标志和一个内容标志,或者使用自身结束的控制标记。就象这样:

内容 例如:

hello world!



例如:

  wml同样支持在标志中标出属性。属性是标志的附加信息,与元素的内容不一样,它并不在屏幕上显示出来。属性通常在元素的开始标志后指定。如上面最后一个例子。

  由于wml是xml的一种应用,因此所有的wml标记和属性都是大小写敏感的(跟完全不同),而且所有的标记都必须正确地结束。wml要求属性的值必须放在双引号或单引号内。单引号可放在属性标志内或双引号内。字符亦可作为属性的值。

wml注释
  xml支持这样的注释格式:


这些注释在浏览器中并不显示出来。
wml不支持嵌套元素注释。

链接(url)
wml外部引用方式跟html相同

http://www.itsalon.net/index.wml 或
http://www.itsalon.net/index.wml#login

内部引用,如果next是当前deck中的一个card时,可以用这种方式:

#next

提供链接功能的wml元素有2个:(参见任务)和(参见事件)。

cdata
  xml支持cdata的概念,以显示不需要解释的文本。下面的例子使用cdata元素在wml页面中显示wml命令文本。

] ]>

浏览器窗口将显示如下内容:

this is data


  有了上面的基础,相信大家已经能够做不少事情了。现在我们来深入一下,看看如何提高性能和网络传输效率。首先,需要介绍一下http 1.1(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: 请求信息发送到的域名


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-125142/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10294527/viewspace-125142/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值