

WML设计-入门篇
时间:[2005-11-4 10:33:08] 作者:未知
WML设计-入门篇 | ||
作者:佚名 文章来源:不详 点击数: 更新时间:2005-8-6 | ||
WML与XML WML是类似HTML的标语言,不同的是WML基础是Extensible Markup Language (XML),而非HTML的基础Standard Generalized Markup Lanuage (SGML),不过XML也正是SGML的变形;本文我们不讨论SGML与XML的差异,只说明撰写WML所需要的XML基础知识,并首先,我们先来看看下面这个基本的WML原始码: <wml> <head> <meta http-equiv="cache-control" content="max-age=0"/> </head> <template> <do type="options" label="help"> <go href="help.wml"/> </do> </template> <card> This is a card. </card> </wml> 以"<"与">"所构成的语法,是XML的基本文法,而以<标>开头,包含内文,再以</标>结束的格式,我们称之为标-Tag,XML的基本元素;由於构成WML的语法是基础於XML,因此它与以SGML的HTML有着明显不同,它是大小写有别的,并且大部份的标名称是以小写为主,因此<card>不等於<Card>,你也不能以<card></Card>构成一个标元素。而所有的标,若无成对,也就是只有开头的单对标,必须以<标/>格式,表示自已是开头也是结尾,例如HTML中的<BR>在WML就必须是<br/>。 既然称标为元素,标就如同细胞,集合而构成WML文件,再构成WAP软体系统,而XML的地位就如同DNA一般,定义了所有元素的基本可能型式。首先我们来谈谈WML的DNA-XML的概念。首先,在XML中标是由一个名称构成,例如<card>,我们就称之为card标,视它为一个基本单位-元素,而每个标开头与结尾之间,我们称之为内文;内文之中,可能包含两种基本常见的元素-标与字串;利用标中能再包含标或字串的特性,虽然简单,但却可以构成许多杂的XML文件,如同细胞虽简单,但却构成了杂的人类一般。虽然标如同细胞,同类的细胞大致相同,但是为了能有弹性的特色变化,XML语法中允许你利用属性值(attribute)给予标更细节的说明,例如前面的例子中的meta标使用中,便使用到了http-equiv与content两个属性值;所以你应该很容易了解标属性值的语法便是在开头标的<>内部指定,以空白做为格的“键名-键值”(key-value)对构成,键值必须以双引号或单引号左右包括起来以示区别;在WML规中,标中的某些属性值是必须的,否则是错误的文法,例如前面例子中的go标的href属性。不要将HTML中允许简化而不在键值左右加上引号的坏习惯带来,这在XML文法中是不允许的。 XML虽然规了标的组合方式,但是WML规格会给允每个具有义意的标(如同前面的例中的wml、template、card,等等...)一定的规格,也就是说什麽样的标有什麽样的意义,标能包含什麽样的标,都有其规存在,而不是杂乱无章的;例如,我们拿前面的WML原始码例来看,WML对wml所能包含的内文规就如同以下: 图表 1、标的内文属性 元素 包含 <head> 无或包含一个 <template> 无或包含一个 <card> 包含一个或一个以上 这样的规格制定方式,在XML中是以Document Type Definition DTD来定义的,因此WML也有它语法对映的DTD格,我们抽取其中制定wml标的部份来看: <!ELEMENT wml ( head?, template?, card+ )> XML的文件构成,如果以分析的角度来看,便如同一个树状的资料结构: wml标包含了head、template与card三个标,每个标或字串在这资料结构中,被视为一个节点,而身为最顶端的节点-<wml>,即为整个树状结构资料的WML文件的根,这是WML文件的第一个标开头。接下来,wml标所能包含的内文可以是依顺序head、template与card标,在DTD中的语法中,你应该很容易了解它的意义与使用方法,在上面的DTD语法中ELEMENT後所接的便是欲描述的标,构成的标名旁加“?”表示“无或包含一个”,而“+”表示“包含一个或一个以上”,若旁边没加任何符号,则表示“正好一个”,你可以参考图表1来了解其间的关。 WML的显示 wml标中head与template是非必要性的标,我们稍後再讨论;而card标是整个WML文件内容的主要所在,如同HTML语法中的body标一般,所有可见的内容都在这里;card所能包含的文字与图型控制标,与HTML语法类似。这些文字控制标该怎麽应用呢?例如: <card id="main" title="Hello World"> <p> <i>Hello WAP World.</i> </p> <p> This is my first <br/><b>WML</b> example. </p> </card> 下面则是WML显示幕上你可能看到的情形 card里包含了两个p标(功用在於区分段落),所以被包含的“Hello WAP world”与“This is my first WML example”便会被分段开来;而i标与b标所包含的文字分别会以斜体与粗体显示。上面所谈到的标都是文字格式化的标,与HTML类似,共有: 标 用途解释 em 将字体强调 strong 将字体加强强调 i 将字体变成斜体 b 将字体变成粗体 u 将字体加上底线 big 使用较大的字体 small 使用较大的字体 分页的文件格式 但是,card不同於body标的地方是html标只能包含一个body,而wml标却能包含一个以上的card标,这样设计上的差异主要是WML文件的显示器通常是行动电话之类的小型显示幕,受限於显示空间,而将WML文件(Deck)设计成可以包含多个页面(card)的格式。这样的设计格局: 这样的设计格局,显示出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"> <!-- Main menu for WML examples --> <wml> <card id="card1"> <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> Go back to <a href="#card1">card1</a> of this deck. </p> </card> </wml> 下面是它的执行结果,同样的,也是与WML显示器有关,呈现方式也不一定: a是表示超链结的标,而其属性href则是指向超链结位置,而以 "#card_id"的href值,则表示该deck中的某个id相符的card,选取这个超链结便会切换到该card;这样的切换方式也与HTML类似,所以也不难猜到你可以用href=”url_link#card” 来指向某WML中的某个card。 第一阶段的WML教学到此结束,WML与HTML不光是单方面的资料浏览功能,而是要有与HTML功能相近的表单功能来达成与使用者的双向沟通能力,下一篇教学文章我们将会把重点放在这里。 |
【声明】本站刊载的《WML设计-入门篇》一文如果有侵害你权益的情况,请联系我们。我们将及时采取措施。
QQ:44637339 Email:just6@163.com Tel:13355163107 Lining studios