WML(Wireless Markup Language)是用于WAP的标记语言。WML页面文件的后缀是 *.WML,就象HTML的 *.HTML后缀。XML规定定义了一个规范的XML文件的规格。任何违反这个规定的WML文件会出错。WML文件通常使用XML解释器起来解释。
1、XML程序的基本结构
一个完整的WML语言教程需要好几十页,这些教程可以在网上找到,这里只大致介绍一些必要的知识。我们首先从一个简单的页面开始。
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.com/DTD/wml_1.1.xml"> <wml> <card title="Fenghao"> <p>I'm fenghao</p> </card> </wml> |
此程序在手机上显示“I'm fenghao”。
WML语言是一个很严格的,哪怕一点不同都会导致错误。所有的WML程序必须在文件的开头处声明XML文件类型,包括XML的版本,WML的文档类型、所用规范等。声明形式如下:
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.com/DTD/wml_1.1.xml"> |
WML文档是由“卡片(Card)”和“卡片组(Deck)”构成的,一个Deck是一个或多个Card的集合。当客户端发出请求之后,WML即从网络上把Deck发送到客户浏览器,这是用户就可以浏览Deck内包含的所有Card,而不必从网上单独下载每一个Card,程序中的第一个Card是缺省得可见的Card。
<xml>标签:该标签用于包含和定义WML的一个Deck。它有一个可选的xml:lang属性来制定文档的语言,比如<wml xml:lang="zh">表示文档语言为中文。
<card>标签:WML均使用<card>和</card>进行包含和定义。 <card>同时可以包含多个可选的属性,
如:
card id="name" title="label" newcontext="false" ordered="true" onenterforwand="url" pmemterbackward="url" ontimer="url">。
2、WAP网页的建设
以下的程序放在网站的首页上,名字是index.wml,手机WAP浏览器将访问者个网页,并要求用户输入执行操作的代码,让后将这个代码传送给resquest.asp。
<?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> <!-- Possible <head> element here. --> <head> <meta forua="true" http-equiv="Cache-Control" content="max-age=0"/> <meta forua="true" http-equiv="Cache-Control" content="must-revalidate"/> </head> <template> <!-- Template implementation here. --> <do type="prev"><prev/></do> </template> <card id="card1" title="wap" newcontext="true"> <p> <b>code:</b><br/> <input name="SID" size="10" maxlength="50" type="text" format="*N" emptyok="true"/><br/> <br/> <anchor title="login"> <go href="request.asp" method="post"> <postfield name="code" value="$SID"/> </go>Implement!<br/> </anchor> </p> </card> </wml> |
其中,go主要用来定义浏览器需要导航的URL地址。语句<go href="request.asp" method="post">中,href属性用于指定目标URL地址;method属性用于指定表单是以GET的方式还是post的方式递交Postfield通过URL申请向ASP交换数据。<postfield name="code" value="$SID"/>中,name属性用于指定传输域的名称,value属性用于定义传输的值。这两个属性均为必选属性。
这里给大家一个建议,现在在网上有不少WML浏览器,例如WinWAP,这些浏览器有的时候是不严格的,有些网页在WinWAP上可以浏览,可在手机上偏偏不行,往往是因为一些细微的差错。所以在调试的时候注意手机和WML浏览器的配合,避免在手机上无法执行时无从下手。