账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
ICP必读─WML技术探讨与实务操作
 

【作者: 陳維哲】2000年02月01日 星期二

浏览人次:【4502】

前言

上期(编按︰第68期76页)我们已把WAP(Wireless Application Protocol)整体架构做一完整性的描述,接下来便是针对WAP网站Content部份的建置方法,以及WML(Wireless Markup Language )相关的语法做一完整介绍。读者若已有建置WWW网站的经验,可以由此篇文章轻轻松松的建构属于自己的WAP Homepage。


WML建构在XML之上

WML是类似HTML的标签语言,不同的是WML基础是XML(Extensible Markup Language),而非HTML的基础SGML(Standard Generalized Markup Language)。但其实XML也正是SGML的变形;本文我们不讨论SGML与XML的差异,只说明撰写WML所需要的XML基础知识。


在所有的XML档案的第一行,我们看到的描述是:



<?xml version="1.0"?>



这就是XML的宣告(Declaration),又叫作引言(Prolog)。其中version注明XML的版本,而现有的手机皆以Unicode当作文字编码的原则,故这边不需像Web网页一般加上encoding=”Big5”的属性,加了还会被手机当作是多此一举而发生错误唷。以「<」与「>」所构成的语法,是WML的基本文法,而以<标签>开头,包含内文,再以</标签>结束的格式,我们称之为标签─Tag,WML的基本元素;它是大小写有别的,并且大部份的标签名称是以小写为主,因此<card>不等于<Card>,您也不能以<card></card>构成一个标签元素。而所有的标签,若无成对,也就是只有开头的单对标签,必须以<标签/>格式,表示自已是开头也是结尾,例如HTML中的<BR>在WML就必须是<br/> 。


既然称标签为元素,标签就如同细胞,集合而构成WML文件,再构成WAP软体系统,而XML的地位就如同DNA一般,定义了所有元素的基本可能型式。首先我们先来谈谈WML的DNA─XML的概念。在XML中标签是由一个名称构成,例如<card>,我们就称之为card标签,视它为一个基本单位─元素,而每个标签开头与结尾之间,我们称之为内文;内文之中,可能包含两种基本常见的元素─标签与字串;利用标签中能再包含标签或字串的特性,虽然简单,但却可以构成许多复杂的XML文件,如同细胞虽简单,但却构成了复杂的人体一般。虽然标签如同细胞,同类的细胞大致相同,但是为了能有弹性的特色变化,XML语法中允许您利用属性值(attribute)给予标签更细节的说明,例如例子<标签属性甲=”某属性“ 属性乙=”某属性“>中的标签,便使用到了「属性甲」与「属性乙」两个属性值;所以您应该很容易了解标签属性值的语法便是在开头标签的「<」与「>」内部指定,以空白做为格的「键名─键值」(key-value)对构成,键值必须以双引号或单引号左右包括起来以示区别;在WML规范中,标签中的某些属性值是必须的,否则是错误的文法,例如go标签的href属性。不要将HTML中允许简化而不在键值左右加上引号的坏习惯带来,这在XML文法中是不允许的。


XML虽然规范了标签的组合方式,但是WML规格会给允每个具有义意的标签一定的规格,也就是说什么样的标签有什么样的意义,标签能包含什么样的标签,都有其规范存在,而不是杂乱无章的。我们称这些规范为D​​TD( Document Type Definition),也就是对某种XML文件在格式上的定义。在使用WML时,我们使用wapforum.org这个由世界各地相关产业超过100个公司所组成的组织所制定的DTD标准。我们抽取其中制定WML标签的部份来看:



"



XML的文件构成,如果以分析的角度来看,便如同一个树状的资料结构,如(图一):



《图一 XML树状的数据结构》
《图一 XML树状的数据结构》

wml标签包含了head、template与card三个标签,每个标签或字串在这资料结构中,被视为一个节点,而身为最顶端的节点─<wml>,即为整个树状结构资料的WML文件的根,这是WML文件的第一个标签开头。接下来,wml标签所能包含的内文可以是依顺序head、template与card标签,在DTD中的语法中,您应该很容易了解它的意义与使用方法,在上面的DTD语法中ELEMENT后所接的便是欲描述的标签,构成的标签名旁加「?」表示「无或包含一个」,而「+」表示「包含一个或一个以上」,若旁边没加任何符号,则表示「正好一个」,您可以参考图一来了解其间的关系。


XML文件结构

一份WML文件我们称之为一个Deck,通常一个Deck当中会有card用来在手机上显示,card很像HTML中的body,但是,card不同于body标签的地方是html标签只能包含一个body ,而wml标签却能包含一个以上的card标签,这样设计上的差异主要是WML文件的显示器通常是行动电话之类的小型显示幕,受限于显示空间,而将WML文件(Deck)设计成可以包含多个页面(card)的格式,如(图二)。


《图二 WML文件设计成可以包含多个页面的格式》
《图二 WML文件设计成可以包含多个页面的格式》

这样的设计格局,显示出WML文件以数张牌构成,而以将文件的构成称为一副牌;因此WML的显示端,同时间只会显示一个牌面,为了牌面间的外换, WML藉由链结来达成,与HTML的内部链结切换方式一样;这样的设计无非是为了在小型的显示器上有较好的浏览效果。以下是一个范例:



<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
			"http://www.wapforum.org/DTD/wml_1.1.xml">
"
<wml>
  '
    <P>
       Links Demo: 
    </p>
    <P>
      Go to <a href="#card2">card2</a> of this deck.
      <br/>
      Go to another <a href="deck.wml">deck</a>.
    </p>
  </card>
  <card id="card2">
  	<P>
  		card 1 of this deck.'Go back to card 1 of this deck.
  	</p>
  </card>
</wml>



执行结果如(图三),呈现方式与WML显示器有关,不一定一模一样:


《图三 执行结果》
《图三 执行结果》

a是表示超链结的标签,而其属性href则是指向超链结位置,而以「#card_id」的href值,则表示该deck中的某个id相符的card,选取这个超链结便会切换到该card;这样的切换方式也与HTML类似,所以也不难猜到您可以用href=”url_link#card”来指向某WML中的某个card。


跟据wml_1.1.xml所定义的Tag仅只有三十多个,并不如HTML来得多且复杂,笔者在此假设诸位对于HTML等Markup Language语法有一定的了解程度,并随文后附上WML Quick Reference。碍于篇幅有限,若读者想要多了解WML,请查阅坊间WML相关书籍,若您是HTML高手,别担心,看完实务操作的部份,您一定能很快的上手。


实务操作

笔者在此,以所任职的威波科技WAP网站为例,将整个WAP网站的架设流程详细的解说,希冀对诸位有所帮助。首先笔者以Red-Hat Linux 6.1做为提供Content的平台,并使用Apache Web Server来与前端的WAP Gateway做HTTP协定的资料传输。当然您亦可使用如NT+IIS或是任何的作业系统搭配任何的Web Server。要让手机等行动装置或是WAP Gateway能够辨识WML等的档案格式,必须要对Web Server做MIME的相关设定。笔者在此以占有率最高的Apache为例,以特权使用者root编辑/etc/mime.types档,加入下列型态,如(表一):



《表一 》
《表一 》

若您是使用动态网页像是PHP或是ASP,只需在网页开头处标明header所要传送的档案格式即可,以PHP为例,只需在开头加上header(“Content-Type:text/vnd .wap.wml”);便能正确无误的显示动态产生的WAP网页。


在设定完Web Server with WML Service之后,您的Web Server将可同时提供Web与WAP两种型态的网页服务。接下来您所要做的便是网站内容的建置,笔者在此列上一个简单的范例,诸位可试着将下列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" name="Previous" label="Previous">
			<prev/>
		</do>
	</template>
	
	'
	<timer value="100"/>
    	   <p align="center">
           	'
	   </p>	
	
	</card>		
	
	<card id="home" title="歡迎光臨威波科技">
		<p align="center">
		<table columns="1" align="left">
      			<tr><td>
				<a href="discount.wml">今日特價商品</a><br/>
			</td></tr>
			<tr><td>
				<a href="list.wml">列出所有商品</a><br/>
			</td></tr>
			<tr><td>
				<a href="query.wml">商品搜尋</a><br/>
			</td></tr>
			<tr><td>
				<a href="member.wml">加入會員</a><br/>
			</td></tr>
			<tr><td>
				<a href="change.wml">會員資料修改</a><br/>
			</td></tr>
		</TABLE>
		</p>
	</card>
</wml>



若您是熟练的HTML网页设计者,相信上面的语法难不倒您,其中较需要注意的是WML 1.1对于图档只支援wbmp的档案格式,目前许多的WAP Toolkit皆有附上图形的转档程式,若您跟笔者一样是死硬派UltraEditor或是记事本的爱用者,您可以参考http://www.teraflops.com/wbmp这个网站所提供的转档服务。另外要注意的是中文部份Big5是无法正确的显示在手机上,笔者在威波科技的网站上写了一个小程式,提供Big5转Unicode的服务,网址是http://www.wapertech.com /wap/unicode/bigfive2unicode.php3。上列范例在手机上的显示如(图四)所示(因手机不同而有不同的显示效果)︰


《图四 执行结果》
《图四 执行结果》

结语

以全台第一只销售支援WAP的手机Nokia 7110来说,设计上须注意其最大的binary deck只能有1397 bytes,也就是说超过1397 bytes的deck会被当成错误的WML档案;另外7110对于WML 1.1并非完全支援,许多版面排起来会有些变样,诸位千万别以为自己的设定出了什么错,有关手机部份请自行参阅手机制造商的网站,笔者就此停笔,希冀这篇文章能对诸位设计WAP网站有所助益,若有任何的问题,可上威波科技的网站寻求协助。


(作者任职于威波科技)


附录

WML Quick Reference


(表二)、(表三)、(表四)、(表五)、(表六)、(表七)、(表八)、(表九)


《表二 》
《表二 》
《表三 》
《表三 》
《表四 》
《表四 》
《表五 》
《表五 》
《表六 》
《表六 》
《表七 》
《表七 》
《表八 》
《表八 》
《表九 》
《表九 》
相关文章
线下服务应用与HTML规范发展
多功能嵌入式系统新未来:从Android到Raspberry Pi 3
Type-C 2017行情看涨
Nokia能否重返荣耀?
从「经济视角」看台湾VR产业
comments powered by Disqus
相关讨论
  相关新闻
» 宜鼎独创MIPI over Type-C解决方案突破技术局限,改写嵌入式相机模组市场样貌
» 鼎新电脑串连生态系夥伴 数智驱动智慧低碳未来制造
» 鼎新电脑携手和泰丰田解缺工 以数位劳动力开启储运新时代
» Fortinet SASE台湾网路连接点今年落成 全台巡??落实云地零信任资安
» Ansys模拟分析解决方案 获现代汽车认证为首选供应商


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.1.HK84S25Y0UOSTACUKT
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw