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> |
相关文章推荐
- WML教程及常用功能及实例(中)
- WML教程及常用功能及实例(下)
- jsp常用功能模块-JSP实例学习教程
- jsp常用功能模块-JSP实例学习教程
- jsp常用功能模块-JSP实例学习教程
- jsp常用功能模块-JSP实例学习教程
- jsp常用功能模块-JSP实例学习教程
- Visual C++ 6.0调试功能 图解教程(3)--实例二
- 100多个经典常用的PHP功能插件大全实例演示和下载
- 运行一个实例(进程)功能的多种常用实现
- mysql常用的日期加减函数与实例教程
- Android常用功能实例
- Android常用实例——实现修改用户头像功能
- log4j JAVA 简单日志功能 实现 实例 教程 代码
- CSS3实例教程:详解calc()函数功能
- Visual C++ 6.0调试功能 图解教程(4)--实例三
- CSS3实例教程:详解calc()函数功能
- Android实战简易教程-第三十一枪(基于加速度传感器的摇一摇功能实例)
- 斯坦福大学公开课:iPhone开发教程2010年冬> 各种基础的类,功能,对象和实例的介绍
- MetaSploit攻击实例讲解------工具Meterpreter常用功能介绍(kali linux 2016.2(rolling))(详细)