WML(无线标记语言)是一种脚本语言,它比HTML编写的内容消耗网络浏览器更少的内存与CPU时间,使得它对移动设备更加友好。WML是继承于HTML而来的语言,但是基于XML,所以较为严格。(WML使用WMLScript在客户端运行简单的代码)
如何搭建wap网站呢,我们需要设置IIS服务器MIME类型扩展(win2003里面的IIS可能需要做如下配置)
.wbmp image/vnd.wap.wbmp .wml text/vnd.wap.wml .wmlc application/vnd.wap.wmlc .wmls text/vnd.wap.wmlscript .wmlsc application/vnd.wap.wmlscriptc .wsc application/vnd.wap/wmlscriptc好在Win7内置的IIS已经默认做好了配置,我们就直接编写wml网页吧,代码如下:
<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <head> <meta http-equiv="Cache-Control" content="max-age=0"/> <meta http-equiv="Cache-Control" content="no-cache"/> </head> <card id="main"> This is a wap website,please use opera to visit it! </card> </wml>可以看出和标准的html编码规范类似,html被wml替换掉了,body被card替换掉了,用opera浏览器(其他浏览器貌似没有做wml的解析)访问test.wml页面试试,顺利的话可以看到如下页面。
如果想要服务器支持asp生成wml文件,需要添加如下两行代码:
<%@ Language=VBScript %>
<% Response.ContentType="text/vnd.wap.wml" %>
分别表示用vbscript解释器解释此脚本文件,内容的类型是wml格式,如下创建一个test.asp文件
<?xml version="1.0"?> <%@ Language=VBScript %> <% Response.ContentType="text/vnd.wap.wml" %> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <head> <meta http-equiv="Cache-Control" content="max-age=0"/> <meta http-equiv="Cache-Control" content="no-cache"/> </head> <card id="main"> <% Response.Write("This is a wap website,please use opera to visit me!") %> </card> </wml>网上很多例子都说把上面需要添加的两行代码放在<?xml ... 的前面,我这边测试总会提示说 xml 解析失败,可能是新的xml标准需要文件头必须是xml标识吧,上面的代码运行也是正确的。
接着用php来生成wap网页也很方便,示例代码如下,文件test.php:
<?php Header("Content-type: text/vnd.wap.wml"); Header("Cache-Control: no-cache, must-revalidate"); Header("Pragma: no-cache"); echo "<?xml version='1.0'?>"; ?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <head> <meta http-equiv="Cache-Control" content="max-age=0"/> <meta http-equiv="Cache-Control" content="no-cache"/> </head> <card id="main"> <?php echo "<p>php test</p>"; ?> </card> </wml>
虽然搭建基于wml的网站如此简单,可是功能上还是简单了一点,比如我最近想获取wap请求的referer头信息就不是一件容易的事情,wml1.1中规定需要结合go标签来实现,所以开发wap应用和web应用时需要注意,两者对于HTTP协议的支持是有区别的。
个人认为随着智能手机,智能终端的普及,表现力更为丰富的HTML还是会取代WML成为移动设备的标准吧,毕竟现在看来只有一些低端非智能机还在使用WML,更多的VPS(虚拟专用服务器)提供商也慢慢地从wml转移到html上面来了。