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

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值