注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 程序开发 > 微软开发专栏 > XML 内容正文:WML——XML标记语言开发实例详细解析

WML——XML标记语言开发实例详细解析

发布时间:2006-03-10 19:12:23 来源:友佳学院 网友评论 0 条

   本文主要介绍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模拟器中看看运行的效果。下面是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的内容了。
相关文章
  • XML Schema帮你建模(1)
  • XML Schema帮你建模(2)
  • XML Schema帮你建模(4)
  • XML Schema帮你建模(3)
  • 使用.NET存储XML数据
【评论】【收藏本文】【打印】【关闭】
上一篇文章:在 Excel 2003 中创建 XML 映射
下一篇文章:RSS的语言编码大全
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
推荐阅讯
  • 使XML本地化和关系化
  • 给 XML 初学者
  • 在 Excel 2003 中创建 XML 映射
  • XML Schema帮你建模(2)
  • 一个简单的XML Schema的例子
  • 全局XML Web服务体系结构概述
  • 巧用XML做多语言界面的FLASH
  • 在.NET Framework中轻松处理XML数据(五)
  • XML数据库中几个容易混淆的概念
  • 使用.NET存储XML数据
阅读排行
  • 1.XML Spy实例教程
  • 2.XML Schema帮你建模(1)
  • 3.XML+ JS创建树形菜单
  • 4.XSL概述
  • 5.XML Schema帮你建模(3)
  • 6.XML Schema帮你建模(2)
  • 7.使用.NET存储XML数据
  • 8.XML Schema帮你建模(4)
  • 9.XML的四种解析器原理及性能比较
  • 10.全局XML Web服务体系结构概述
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载