收藏本站 
广告服务 
网站地图 
>> 我们从网络和杂志上收集了近100000余篇各类电脑技术、网络技术、软件技术等方面的文章教程,我们的收录原则:不是精华拒不收录!
先飞电脑技术网技术文章
WML标记语言开发实例详细解析
[ 作者:佚名    转贴自:网络转载    阅读次数:0    更新时间:2006-11-26 13:23:00   录入:刘光勇 ]        
    

本文主要介绍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的标记非常少,基本可以分为两种一种称为Deck/Card一种称为Event。在这里不能一一讲述,在我们开发WML应用的时候参考手册就可以了,我给大家提供一个在线的参考:Online WML Tag Reference。 

  在标记内的内容我们把它称为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模拟器中看看运行的效果。

图略 

虽然我们已经可以开发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/wapse ... od="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://***/test2.wml 确认后就可以看到you selected xxxx的内容了。

上一篇:XML条件注释理论及实践  下一篇: XHTML验证工具和验证网址  

网站主页 | 收藏本页 | 联系我们 | 广告服务 | 站点地图 | 会员注册 | 招聘信息 | 内容指正

联系QQ:先飞电脑技术网站事务联系QQ,点击可以直接留言. 32933427 电话:13710542091 [世界排名] 鄂ICP备05005890号