WML开发详细指南

原创 2004年09月22日 21:39:00
  WAP开发入门--搭建开发环境讲述了如何搭建WAP应用程序的开发环境,本章将主要介绍WML的相关知识,如何开发WAP应用程序。

    WML是一种基于XML的标记语言,她的官方说明和规范是由WAP论坛维护的。WML的文档类型定义是xml文件类型的,http://www.wapforum.org/DTD/wml_1.1.xml。和HTML语言一样,WML是为了显示数据的,而XML的目的则是描述数据,我们定义了一系列的标记并组织成为语法规范把它称为DTD(Document Type Definition)。支持WAP的手机里面都安装了WAP浏览器他能够解析这些标记并正确显示在手机屏幕上。

    通常在WML的文本的开头都有这样的内容
<xml version='1.0'>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
我们把它叫做序言。在后面就是<wml></wml>标记了,我们所有的数据都是嵌套在这两个标记里面的。WML的标记非常少,基本可以分为两种一种称为Deck/Card一种称为Event。在这里不能一一讲述,在我们开发WML应用的时候参考手册就可以了,我给大家提供一个在线的参考:Online WML Tag Reference。在<wml></wml>标记内的内容我们把它称为deck,每个屏幕的内容我们把它定义为card,由于WML是为无线网络传输定义的,充分考虑到带宽的限制,我们允许在一个deck内包含多个card并可以一起下载到用户代理中,这样我们就可以在本地进行不同屏幕的切换了,避免每次都去联网。当然这也给客户端增加了负担,因此我们要避免在deck内包含过多的card。

    下面我们编写一个WML的例子test.wml,内容如下:
<?xml version='1.0'?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
 
<wml>
    <card id="Login" title="Login">
  <do type="accept" label="Password">
   <go href="#Password"/>
  </do>
  <p>
  UserName:
  <select name="name" title="Name:">
   <option value="John Doe">John Doe</option>
   <option value="Paul Smith">Paul Smith</option>
   <option value="Joe Dean">Joe Dean</option>
   <option value="Bill Todd">Bill Todd</option>
  </select>
  </p>
 </card>

 <card id="Password" title="Password:">
  <do type="accept" label="Results">
   <go href="#Results"/>
  </do>
  <p>
  Password: <input type="text" name="password"/>
  </p>
 </card>

 <card id="Results" title="Results:">
 <p>
 You entered:<br/>
 Name: $(name)<br/>
Password: $(password)<br/>
 </p>
 </card>
</wml>
在这个deck中包含了三个card,可以一并下载到客户端,通过按键操作我们就可以在不同的card之间进行切换,你可以在手机或者winwap模拟器中看看运行的效果。下面是winwap下的运行截图。

    虽然我们已经可以开发wml的应用了,但是这些毕竟都是些静态的内容。如果我们要开发和服务器交互的功能呢?答案当然是我们可以使用Servlet技术。看下面的例子:
<?xml version='1.0'?>
<DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
 
<wml>
 
 <card id="Order" title="Query Inventory">
  <p>
  <select name="Items" title="Items">
   <option value="Books">Books</option>
   <option value="Music">Music</option>
   <option value="Video">Video</option>
   <option value="Software">Software</option>
  </select>
  </p>
  <do type="accept" label="Query">
   <go href="http://222.28.218.222:8088/wap/wapservlet" method="get">
    <postfield name="Items" value="$(Items)"/>
   </go>
  </do>
 </card>
</wml>
用户可以从列表中选择Item,通过无线网络传输给服务器后Servlet通过request.getParameter()方法得到用户的选择并发送给用户,servlet的代码如下:

package com.j2medev.mingjava;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class WapServlet extends HttpServlet
{

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException
    {
        String select = request.getParameter("Items");
        response.setContentType("text/vnd.wap.wml");
        PrintWriter out = response.getWriter();
        out.println("<?xml version=/"1.0/"?>");
        out.println("<!DOCTYPE wml PUBLIC/"-//WAPFORUM//DTD WML 1.1//EN/"");
        out.println("/"http://www.wapforum.org/DTD/wml_1.1.xml/">");
        out.println("<wml>");
        out.println("<card title=/"test/">");
        out.println(" <p align=/"center/">");
        out.println("you selected "+select);
        out.println("</p>");
        out.println("</card>");
        out.println("</wml>");

    }

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException
    {
        doGet(request,response);
    }
}
正确部署Servlet和wml文件后,在winwap下输入http://222.28.218.222:8088/test2.wml 确认后就可以看到you selected xxxx的内容了。

WML开发详细指南

  WML是一种基于XML的标记语言,她的官方说明和规范是由WAP论坛维护的。WML的文档类型定义是xml文件类型的,http://www.wapforum.org/DTD/wml_1.1.xml。和...
  • wengyupeng
  • wengyupeng
  • 2008年07月26日 15:42
  • 515

修改浏览器使之支持WML格式页面

对于移动终端,有时候服务器返回的是WML格式的页面。 比如说中国移动的一些需要使用cmwap接入点的业务页面(DCD, 移动梦网…), 这就要求终端浏览器必须能够支持对WML格式页面的解析和显示。 A...
  • centralperk
  • centralperk
  • 2012年05月02日 19:17
  • 4319

WML的简单例子及编辑、测试方法

WML的简单例子及编辑测试方法——欢迎访问天极软件WML教程专区  完成WAP服务器的建立和WAP浏览器的安装之后,我们接下来就可以使用WML语言来编写WAP网页或应用,并通过WAP服务器及浏览器进行...
  • yan_wang929
  • yan_wang929
  • 2007年02月09日 16:25
  • 723

WML Browser

The WMLBrowser library contains functions that can be used to access browser variables.WML Browser库(...
  • cuoguo1111
  • cuoguo1111
  • 2007年03月01日 17:20
  • 559

将wml转换成html的方法。

Opera是直接支持wml的,但是有不少bug。 Firefox需要插件wmlbrowser来进行转换。 IE没法直接支持wml显示,但是有个在线转换的工具,通过中间代理的方式来获取内容,...
  • hq0927
  • hq0927
  • 2012年10月17日 10:32
  • 3365

wml语言学习笔记--基础教程(转)

wml语言学习笔记--基础教程     ...
  • ejlf2000
  • ejlf2000
  • 2006年08月11日 16:22
  • 935

2016外省人在上海办护照,港澳台通行证详细指南

2015外省人在上海办护照,港澳台通行证详细指南 http://bbs.qyer.com/thread-785787-1.html上海市护照办理网上预约地址 http://crj.police.s...
  • doomvsjing
  • doomvsjing
  • 2016年02月23日 13:29
  • 1873

lFS和标准

lFS和标准 POSIX.1-2008 文件系统层次标准 版本3.0草案 linux标准基础(LSB)基础 软件包逻辑 Acl 包含管理访问控制列表(ACL)的工具,用于定义文件和目录更细粒度的自主...
  • xxoo00xx00
  • xxoo00xx00
  • 2017年05月10日 10:32
  • 265

重磅 | 详解深度强化学习,搭建DQN详细指南(附论文)

重磅 | 详解深度强化学习,搭建DQN详细指南(附论文) 2016-06-26 机器之心 机器之心 选自 Nervana 作者:Tambet Matiisen 机器之心编译...
  • ynsshzwxhzyx
  • ynsshzwxhzyx
  • 2017年03月26日 11:35
  • 846

WAP文件WML的基本格式和文件头(转)

最近在网上看到有很多人开始建手机移动网站了,所以自已也正好建了一个小站玩玩! 在手机里输入网址:http://woodman.wapi.cn  就可以上我的网站看看了,里边现在什么都没有!内容以后我...
  • fengmm521
  • fengmm521
  • 2017年11月03日 18:44
  • 84
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WML开发详细指南
举报原因:
原因补充:

(最多只允许输入30个字)