您的位置:首页 > 其它

WML教程及常用功能及实例(上)

2009-05-10 21:35 239 查看
WML教程及常用功能及实例(上)

WML教程1:从第一个实际应用全面了解WML
-------------------------------------------------------------------------------------------------

学习自然语言的最好方法就是溶入相应的语言环境在交流中学习,学习一种编程语言的最好方法就是看例程。为了帮助大家建立wml应用的第一印象,所以请大家先看第一个例子:
<?xml version="1.0"?>
<!doctype wml public "-//wapforum//dtd wml 1.1//en"
"http://www.wapforum.org/dtd/wml_1.1.xml">
<wml>
<template>
<do type="prev" label="back">
<prev/>
<!--provide a button you can clink to back a step-->
</do>
</template>
<card id="friends" title="hot link">
<p>
<a href="http://wap.sian.com.cn/">sina wap</a><br/>
<a href="#nextcard">next card</a>
</p>
</card>
<card id="nextcard">
<p>
this is the second card.
</p>
</card>
</wml>
通过以上示例大家应该了解到以下内容:
1、语法:wml的语法与html相似,仍然是一种标记语言,而且延续了xml语法规则
2、元素:在xml和wml 语言中,语言的基本元素称之为"标签"
标签必须被 < 和 > 括起来。
大多数标签都包括"起""止"两部分,例如:<p>…</p>
某些特殊标签可以只有一个标签,但是必须有结束标记,例如:<prev/>
3、属性:xml语言的标签可以包含很多属性,给标签提供必要的附加信息
属性内容通常在起始标签内使用
属性只作为参数为标签提供必要的信息,不会被浏览器显示
属性的值需要被引号括起来,可以是单引号或者双引号,引号可以成对嵌套使用
例如:<card id="friends" title="hot link">
4、注释
注释内容是方便制作者阅读源代码,不会被浏览器显示
wml不支持注释嵌套
例如:<!-- this is a comment. -->
5、文档结构
wml文档是由card和deck构成的,一个deck是一个或多个card的集合。在得到客户终端的请求之后,wml从网络上把deck发送到客户的浏览器,访问者可以浏览deck内包含的所有card,而不必从网上单独下载每一个card。
其他一些示例中没有涉及到的基本内容:
6、大小写敏感
无论是标签元素还是属性内容都是大小写敏感的,这一点继承了xml的严格特性,任何大小写错误都可能导致访问错误,这是wml制作者必须注意的问题。
7、躲避语法检查的方法-cdata
cdata内的数据内容都会被当作文本来处理,从而避开语法检查,直接作为文本显示。
示例:
< ! [ cdata [ this ia <b> a test ] ] >
显示结果为
this ia <b> a test
8、定义变量
wml可以使用变量供浏览器和script使用,通过在deck中的一个card上设置变量,其他card不必重新设置就可以直接调用。
变量的语法如下:
$identifier
$(identifier)
$(identifier:conversion)
如果变量内容包含空格就需要用圆括号括起来。由于变量在语法中有最高的优先级,包含变量声明字符的字符串会被当作变量对待,所以如果要显示$,就一定要连续使用两个$。
示例:
<p> your account has $$15.00 in it.</p>
显示结果为:your account has $15.00 in it
xml是一种语法非常严格的语言,wml也继承了这种规则,任何地不规范语法都会导致错误。
WML教程2:简单介绍关于WML文件的概念WML Decks
-------------------------------------------------------------------------------------------------
这里简单介绍一个关于wml文件的概念,其他的细节问题会在后面的章节还详细介绍。
声明
由于wml语言继承于xml,所以一个有效的wml文档必须包含一个xml声明和一个文件类型声明。
以下就是一个最常用的声明,由于wml语法要求非常严格,为了避免出错,制作者可以直接拷贝粘贴到制作文档。
<?xml version="1.0"?>
<!doctype wml public "-//wapforum//dtd wml 1.1//en" "http://www.wapforum.com/dtd/wml_1.1.xml">
注:<?xml version="1.0"?> 语句必须出现在一个deck的首行,而且必须顶头写,插入任何字符哪怕是空格都会造成语法错误。
主体结构
这是一个最简单的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="sample">
<p>hello wap!</p>
</card>
</wml>
WML教程3:任务与导航-赋值与数据交换
-------------------------------------------------------------------------------------------------------------------------------
这一部分简单讲解wml的变量赋值和数据提交方法,在后面的章节中有专门讲解。
变量赋值(setvar)
setvar给浏览器的当前页面内变量赋值,该变量可以在当前dock中的任意card中调用。
相关属性:
1. name 变量名,作为访问变量的标识
示例:<setvar name=$bogus value=$bear>
2. value变量的值
数据交换(postfield)
postfield通过url申请与cgi交换数据。
相关属性:
name & value 交换参数用的变量的名字和值。
示例:<postfield name=$bogus value=$bear>
一个综合应用的例子
示例:
<?xml version="1.0"?>
<!doctype wml public "-//wapforum//dtd wml 1.1//en" "http://www.wapforum.com/dtd/wml_1.1.xml">
<wml>
<card id="start" title="sina wap">
<do type="accept">
<setvar name="mycgi" value="/cgi-bin/count.pl">
<go href="$mycgi" method="post">
<postfield name="one" value="one one"/>
<postfield name="two" value="two two"/>
</go>
</do>
<p>hello world!</p>
</card>
</wml>
上例相当于产生一个count.pl?one="one one"&two="two two"的post申请。
WML教程4:跳转和传递参数
-------------------------------------------------------------------------------------------------------------------------------
go的基本属性和应用
实现card之间跳转的一个基本方法是go,go和do、anchor等标签的结合是wml高级应用的一个基础。
相关属性:
href:声明链接的url
sendreferer:表示是否传递调用href所指定的url的页面的url,也就是当前页的url,即http头中的http_referer,默认值为false,可选值为true
method:wml的method与http提交表单的方法类似,同样有post和get两种,缺省参数为get。
post与get的不同:post在发送前要进行编码处理,然后分组发送,发送过程相对安全,适合大数据量的处理;而get方法不进行任何处理,一次性发出,适合小数据量交换。除非你肯定你提交的数据可以一次性提交,否则请尽量用post方法。
accept-charset:定义浏览器与服务器之间收发信息的字符集类型,例如:accept-charset="utf-8,us-ascii,iso-8859-1"。
示例:
<?xml version="1.0"?>
<!doctype wml public "-//wapforum//dtd wml 1.1//en" "http://www.wapforum.com/dtd/wml_1.1.xml">
<wml>
<card id="start">
<do type="accept" label="next">
<go href="#nextcard"/>
</do>
<p>this is the first card!</p>
</card>
<card id="nextcard">
<do type="prev" label="before">
<prev/>
</do>
<p>this is the last card!</p>
</card>
</wml>
go结合postfield交换参数
标签go可以包含一个或多个postfield标签,用这些标签携带参数与服务器进行数据交换。
示例1:产生一个"quote.pl?stock=00001"get申请
<go href="/cgi-bin/quote.pl">
<postfield name="stock" value="00001"/>
</go>
示例2:产生一个"stockname=证券&page=1"post申请
<go href="/cgi-bin/query.pl" method="post">
<postfield name="stockname" value="证券"/>
<postfield name="page" value="1"/>
</go>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: