ddc
联网
平面设计 画册 VI欣赏 包装 CG-插画 搜索 个人网页 Alexa排名 CSS 建站资源 下载专区 JS特效 品牌服装 服装院校 专题欣赏 SEO 图标欣赏 专题
上海网站建设 网站建设 域名注册 虚拟主机 广州网站设计 域名注册 广州网站建设 上海网站建设 虚拟主机 广州网页设计 虚拟主机 域名注册 acg ACG玩家 品牌设计
求创科技
网站建设
中国互联
投稿
素材出售
中国设计秀
中资源
当前位置:网络学院首页 >> 设计教程 >> WAP网站攻略 >> WAP建站入门教程

WAP建站入门教程 (10)

来源:中国设计秀    作者:    点击:2387     加入收藏    发表评论
0
顶一下
对于Perl编程,其基本原理符合CGI编程原理。先看下面的程序片段:
# HTTP header with correct MIME type
print "Content-type: text/vnd.wap.wml\n\n";

# WML starts here with the correct XML doc type declaration
print "<?xml version=\"1.0\"?>";
print "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\"";
print "\"http://www.wapforum.org/DTD/wml_1.1.xml\">";
……
更多的Perl 代码,输出WML页面内容。
……
    按照以上的程序开头便可以输出动态的WML页面。下面有一段更详细的教程,这个教程是为以下开发者准备的:
    • 知道如何编写WML页面和卡片,并且了解自己的工作。
    • 知道如何配置自己服务器,使之能够运行Perl。
    • 有CGI的基本知识,并且了解Perl的语法。
    从表面上来说,使用CGI来产生WML页面和产生HTML页面没有太大的区别。一旦读者仔细地看一下,就会明白WML所包含的新内容的确还是与其他的页面动态生成有所不同。
    假设,老板需要做一个可以通过电话来访问电话目录。公司现在只有两个职员,但是将要不断扩大。因此,肯定不会去做一个固化的目录。相反将把数据保存在一个文本文件中,通过动态生成WML页面的来显示信息。
    首先,将要建立一个“people_data.txt”,如下所示:
# Format is:
# Name|phone num|fax num|Title
Linus Smith|123-4567|098-7654|Director of OS Development
Jane Doe|123-4568|098-7655|Senior VP of OS Research
    可以看出“|”符号是用来区别字段的。“#”是用来表示注释的。这些字符没有其他的意义,仅仅是一般的转换。
    下面,需要决定最后的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 title="Telephone Book" id="index">
    <p>
        Welcome to Widgets Inc. Telephone Book
        <a href="#view">Click to view list</a>
    </p>
</card>
<card title="List of Names" id="view">
    <p>
        <a href="#linus_info">Linus Smith - 123-4567</a>
        <a href="#jane_info">Jane Doe - 123-4568</a>
    </p>
</card>
<card title="Info for Linus Smith" id="linus_info">
    <p>
        Director of OS development
        Phone number: 123-4567
        Fax number: 098-7654
    </p>
</card>
<card title="Info for Jane Doe" id="jane_info">
    <p>
        Senior VP of OS research
        Phone number: 123-4568
        Fax number: 098-7655
    </p>
</card>
</wml>
    每当增加新成员的时候,都不得不重新修改文件。这不是一个好办法。但是如果向文本文件中增加内容,那将是一个不会编写WML页面的程序员也会的事情。为了实现这个目标,使用以下的脚本:
#!/usr/bin/perl –w
use strict;
use CGI qw/:standard/;

# Our CGI object
my  $q = new CGI;
    以上的内容是设置Perl环境。使用CGI模块来进行HTTP数据显示和处理。然而在这个例子当中,将使用尽量少的CGI模块,读者将会在将来的教程当中明白处理服务是多么的复杂。
# data file to get info from
my  $data = "people_data.txt";

# Template for the title card
my  $title_card = qq (
<card title="Telephone Book" id="index">
<p>
Welcome to Widgets Inc. Telephone Book<br/>
<a href="#view">Click to view list</a>
</p>
</card>
);

# Initial id of the first record
my  $id = "a";
    这里已经创建了一个字符串,它将作为标题卡片。当然还有需要创建的动态ID。(选择‘a’,是因为它是一个简单的字符,可以很容易地增加)既然每个记录都有唯一的ID(因此可以把它作为头一个卡片)。ID将从‘a’开始,然后每找到一个新记录就增加一个。要一次性将所有的名字都生成卡片。然后使用一个初始化的缓冲区来显示成员的数据内容。
# Now iterate over the
data file building data dynamically
open(FILE," $data") || die "Can't open  $data:  $!\n";
while (<FILE>) {
chomp;
next if (/^\#/);
my ( $name,  $phone,  $fax,  $position) = split(/\|/);
    打开自己的文件(当然要检查打开权限,保证能够打开),现在就可以读取了(注意:要跳过以“#”开头的行)。其他的部分,只需要从已经定义和产生的文件中读取就可以了。显然在读取的过程当中,需要做一定的检查,保证每个部分的确有数据。
# Build up the view card
 $view_card .= build_view_card( $name,  $phone,  $fax,  $position);
# Build up info cards
 $all_info_card .= build_info_card( $name,  $phone,  $fax,  $position);
}
    这里,将从文件中提取的数据传给两个函数。他们将返回由这些参数所确定的卡片。注意到Perl的“.= ”操作符,函数返回的字符串将不断地扩充。
# Finish off the card

 $view_card .= "</p> </card>";

my  $header = qq (
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml.xml">
);

# Template for the entire deck
my  $deck = qq(
 $header
<wml>
 $title_card
 $view_card
 $all_info_card
</wml>
);
print  $q->header('text/vnd.wap.wml');
print  $deck;
    这里非常简单地将他们绑在一起。打印文件头,建立卡片,并且将他们动态地放在一起。当做好这一切之后,需要输出一个Content-type头        text/vnd.wap.wml。
    现在来看一下建立卡片的两个子过程:
sub build_view_card {
 $id++;
my ( $name,  $phone,  $fax,  $position) = @_;
my  $info_item = qq (
<a href="# $id"> $name -  $phone</a><br/>
);
return  $info_item;
}
    这个代码将接收信息,并把这些信息插入到一个简单的模板里面。一个非常重要的一点是每次都在增加“ $id”变量的数值。这个保证每个记录都有唯一的id号。Perl允许直接使用“++”操作符,使得从‘a’增加到‘b’。
sub build_info_card {
# Template for card showing info for a single person
my ( $name,  $phone,  $fax,  $position) = @_;
my  $info_card = qq (
<card title="Info for  $name" id=" $id">
<p>
 $position<br/>
Phone number:  $phone <br/>
Fax number:  $fax <br/>
<do type="prev"><prev/></do>
</p>
</card>
);
return  $info_card;
}
    在这个子过程当中,做了和前面一样的事情,只不过用了不同的模板。注意到已经在前面的函数中增加了“ $id”的数值,因此,在这个函数中只需要返回一个新的卡片就可以了。
    这就是全部过程,现在已经有了一个动态的电话本。当然这个教程不是一个很好的解决办法,至少他需要一个人手工来修改txt文件。另外,WML页面有大小的限制。但是无论如何,以上就是全部的过程
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16]
2006-12-23 11:47:00    出处:yesky
Google
热点文章/相关文章

音乐
嫁衣 画心 放生 天亮了 牡丹江 那滋味 擦肩而过 怀念过去 北京欢迎你 突然好想你 吻的太逼真 说好的幸福呢 坐上火车去拉萨 没有人比我更爱你
愚爱 心碎 稻香 带我走 醉赤壁 魔杰座 我还想她 明天过后 一定要爱你 等爱的玫瑰 原谅我一次 越单纯越幸福 最后一次的温柔 给我一首歌的时间
白狐 光荣 降临 下雨天 小酒窝 樱花草 恋爱新手 说唱脸谱 红色高跟鞋 寂寞才说爱 深深爱过你 爱上你是个错 即使知道要见面 不是因为寂寞才想你
城府 假如 花海 兰亭序 棉花糖 舍不得 最后一次 女人如烟 外滩十八号 我们的纪念 我们的无奈 心在跳情在烧 爱上你是我的错 爱情里没有谁对谁错
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明 | 网站公告 | 友情链接 | 留言 | 旧版入口