您的位置:首页 > Web前端 > CSS

wml语言学习笔记--基础教程(转)

2006-08-11 16:22 567 查看
wml语言学习笔记--基础教程
 
 
  某驼一直觉得学习是人生中最大的乐趣.虽然某驼现在还菜的不得了.年前学了css+div排版,某驼觉得很有收获。也曾一度因为自己在短时间内掌握一门技巧而沾沾自喜ing。不过自喜完了回头看一眼学习过程,就发现自己学习过程中暴露出来的不足反而更触目惊心。首先是因为学习时间短,有些精髓的东西理解不透,细节的地方也缺乏重视。所以作品出来的时候,让高手一看就挑出了毛病。然后就是拓展。任何一门学问技巧都不是独立的。css+div排版是web2.0标准的一部分,它的学习和web2.0应该是紧密结合在一起的。脱离了web2.0这个标准,单纯css+div意义也是不大的。so,我在学习css+div的时候,web2.0的其他部分注意到了多少呢?so,虽然短暂的css+div排版学习已经过去,css+div的路还有很长。而刚刚开始的wml学习里,我又能长进多少呢?
 
 
 
wml简介:

无限标记语言WML(Wireless Markup Language)是一种基于扩展标记语言XML(Extension Markup
Language)的语言,是XML的子集。它可以显示各种文字、图像等数据,是由WAP论坛(http://www.wapforum.org)提出并专为无线设备用户提供交互界面而设计的,目前版本为1.1版。这些无线设备包括移动电话,呼机和个人数字助理PDA(Personal Digital Assistants)等。

编辑器
使用WML语言编写WAP网页或应用时,需要使用一个编辑器进行编辑。与HTML编程一样,WML编写的程序也是纯文件文本,可以使用任意文本编辑器进行编写。某驼平时用的一些模拟器如nokia提供的除了能显示外通常也带有编辑的功能,方便随时编写随时查看。wml文件的拓展名可以是.wml或者.xml。当然也可以用.php,.asp,.jsp来做,wml页面里也可以直接夹杂.php,.asp,.jsp等的代码。当然这需要从服务器端配置一下的说。
 
语言基础知识
 
与HTML类似,WML的主要语法也是元素和标签。元素是符合DTD(文档类似定义)的文档组成部分,如title(文档标题)、IMG(图像)、table(表格)等等,元素名不区分大小写。
WML使用标签来规定元素的属性和它在文档中的位置。标签使用小于号(<)和大于号(>)括起来,即采用“<标签名>”的形式。标签分单独出现的标签和成对出现的标签两种。大多数标签是成对出现的,由首标签和尾标签组成。首标签和尾标签又分别称为起始标签和终止标签。首标签的格式为“<元素名>”,尾标签的格式为“</元素名>”。成对标签用于规定元素所含的范围,比如<b>和</b>标签用于界定黑体字的范围,也就是说<b>和</b>之间包住的部分采用黑体字显示。单独标签的格式为“<元素名/>”,他的作用是在相应的位置插入元素。如〈br/〉标签表示在该标签所在位置插入一个换行符
以上一段话对熟练掌握html的人来说基本是废话。

基本名词解释:

元素 :
WML的元素(Element)用于描述卡片组(Deck)的标记信息即结构信息。一个元素通常有一个首标签、内容、其它元素及一个尾标签组成,具有下述两种结构之一:
<首标签>内容</尾标签> 或 <标签/>
元素包含的内容中还可以有元素,这些元素也是有首标签、相应内容、其它元素及尾标签组成。不包含内容的元素成为空元素。它为一个单独的标签。或者说,单独的标签也是一种元素。

属性 :
WML与XML一样,其标签可以包含很多属性。属性用于给标签提供必要的附加信息,且属性内容通常在起始标签内使用。不过,属性内容不会被浏览器显示,它至作为参数为标签提供必要的信息。
指明属性值的时候,需要把该值用引号扩起来,可以是单引号或者双引号,引号通常成对嵌套使用。属性名称必须小写。
例如:<card id="card 1" ontimer="#card2" title="Toolkit Demo">
而且,单引号的属性中还可以包含双引号的属性。实体字符也可以作为属性值。实体字符是指诸如&、<、>、'、"的特殊字符,在WML程序中显示着类字符需要特殊处理,后面我们介绍具体方法。
此步骤对html的熟练工来说也轻而易举
 
注释 :
WML程序中也可以加入注释。注释内容用于给开发人员顺利阅读源代码提供方便,它不会被浏览器显示出来。注释内容在标签中用感叹号(!)引出,并用于<!--注释内容-->的形
式。例如:<!-- Write your card implementation here.-->。需要说明的是,XML程序中不支持注释的嵌套。
 
文档结构 :
WML文档是由“卡片(Card)”和“卡片组(Deck)”构成的,一个Deck是一个或多个Card的集合。当客户端发出请求之后,WML即从网络上把Deck发送到客户浏览器,这时用户就可以浏览Deck内包含的所有Card,而card之间的切换则是由客户端的处理器来处理的。所以不必从网上单独下载每一个Card,程序中的第一个Card是缺省得可见的Card。

WML程序的基本结构
以下是wml的基本结构
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1xml">
<wml>
<head>
<access/>
<meta..../>
</head>
<card>
Some contents...
</card>
<wml>

该基本结构可以分为以下几个关键部分:
1)声明。WML程序有许多Deck组成,对于每一个Deck,在其文档开头必须进行XML的声明和文档类型DOCTYPE的声明。
XML声明总是在文件的第一行,注意前面最好不要有空格或者还行:
<?xml version="1.0"?>

2)紧跟着是DOCTYPE声明,注意声明是字母的大小写不要搞错:
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1xml">
这就是传说中的文件声明。从xhtml开始所有的WML程序必须在文件的开头处声明XML文件类型,包括XML的版本,WML的文档类型、所用规范等。你打开所有的wml文档,开头必定都是这一句。而且在相当长的一段时间内这一行连个标点符号都不会改变。
 
3)<wml>标签。该标签用于包含和定义WML的一个Deck。它有一个可选的xml:lang属性来制定文档的语言,比如<wml xml:lang="zh">表示文档语言为中文。
然而这是一种很让人丧气的做法,因为即使规定了xml:lang="zh",很多wap浏览器仍然不支持中文,最万无一失的方法还是把汉字转化成uincode编码。所以,去找一个编码转换器吧,那将会是很有用的。也许有可以直接进行转化的wml编辑器也不一定,驼驼没有用过。WML还支持其他系列的字符集子集,例如UTF-8、ISO-8859-1或UCS-2等。
顺便提醒一下:<?xml version="1.0" encoding="gb2312">也是一种表示文档语言为中文的方法,然而它并不比<wml xml:lang="zh">有效多少。
4)<head>标签。该标签用于包含和定义Deck的相关信息。<head>标签之间可以包含一个<access>标签和多个<meta>标签。
5)<access/>标签。它的一般形式是<access domain="域" path="/路径"/>,主要用于制定当前Deck的访问控制信息,有两个可选的属性。其中,domain用来制定域,默认值为当
前域,path用来制定路径,默认值为“/”,即跟目录。由于<access>单独使用,所以要用“/”结尾,后面我们还会系统的讲解WML的各种标签,这里即使看不懂也没关系,主要有些感性的
认识就可以了。
6)<meta...>标签。它的一般形式是<meta 属性 content="值" scheme"格式" forua="true|false"/>,用于提供当前Deck的meta信息,包括内存数据处理方式,以及数据传输方式和处理方式等。有关该标签的详细内容我们后面会专门给出。
7)<card>标签。一个Deck可以包含多个Card,每个Card的内容可能不止一屏显示。对于每一个Card,WML均使用<card>和</card>进行包含和定义。 <card>同时可以包含多个可选的属性,如<card id="name" title="label" newcontext="false" ordered="true" onenterforwand="url" pmemterbackward="url" ontimer="url">。至于这些属性的具体含义及功能,我们将在后面介绍。
 
WML字符使用基本规则
WML是一种比较严格的语言,字符使用必须遵守相应的规则,这些基本规则主要包括以下几个方面:

1)大小写敏感。在WML中,无论是标签元素还是属性内容都是大小写敏感的,这一点继承了XML的严格特性,任何大小写错误都可能导致访问错误。
一般来说,WML的所有标签,属性,规定和枚举及它们的可接受值必须小写,Card的名字和变量可大写和小写,但它是区分大小写的。包括参数的名字和参数的数值都是大小写敏感的,例如variable1、Variable1和vaRiable1都是不同的参数。
 2)空格。对于连续的空字符,程序运行时只需要一个空格。属性名、符号(=)和值之间不能有空格。

3)标签。标签内属性的值必须使用双引号(")或单引号(')括起来。对于不成对出现的标签,必须在大于号(>)前加上顺斜杠(/),比如换行标签必须写成<br/>才正确。

4)不显示的内容。在WML中,不显示的字符主要包括换行符、回车符、空格和水平制表符,它们的8位十六进制内码分别为10、13、32及9。程序执行时,WML将忽视所有的多于一个以上的不显示字符,即WML会把一个或多个连续的换行、回车、水平制表符及空格转换成一个空个。

5)保留字符。这是WML的一些特殊字符,如小于号(<)、大于号(>)、单引号“'”、双引号“"”、和号(&)。
 
变量

WML编程中可以使用变量,变量使用前必须进行定义。变量一旦在Deck中的某一个Card上定义过,其他Card则可以不必重新定义就能直接调用该变量。
定义变量的语法格式为:
$identifier
$(identifier)
$(identifier:conversion)
其中identifier指变量名,或说变量标示符;conversion指变量的替代。
变量名是由US-ACSII码、下划线和数字组成的,并且只能以US-ACSII码开头。变量名严格区分大小写,也即,变量名是大小写敏感的。
定义变量的语法在WML中享有最高的解释优先级。
有关变量的使用说明如下:
1)在WML中,变量可以在字符串中使用,并且在运行中可以更新变量的值。
2)当变量等同于空字符串时,变量将处于未设置状态,也就是空(Null)。
3)当变量不等同于空字符串时,变量将处于设置状态,也就是非空(Not Null)状态。
4)在“$identifier”形式下,WML通常以变量名后面的一个空格表示该变量名的结束。如果在某些情况下空格无法表示一个变量名的结束,或者变量名中包含有空格,则必须使用括号将变量名括起来,即采用“$(identifier)”的形式。
WML程序中的变量是可以替代的,我们可以把变量的数值赋给Card中的某一文本。有关变量替代说明如下:
1)在WML程序中,只有文本部分才可以实现替代。
2)替代一般在运行期发生,而且替代不会影响变量现在的值。
3)任何标签是按照字符串替代的方式实现的。
4)替代是按照字符串替代的方式实现的。

由于变量在语法中有最好的优先级,包含变量声明字符的字符串将被当作变量对待,所以如果要使程序显示“___FCKpd___0rdquo;符号,则需要连续使用两个“___FCKpd___0rdquo;进行说明。例如:<p> Your acconut has $15.00 in it </p>一句显示的结果为:Your account has $15.00 in it。

卡片与卡片组

前面我们分析了WML程序的结构时,曾将讲到WML文档的信息是通过卡片集和卡片组集的形式进行组织的。一个Deck是一个或多个Card的集合。当客户终端发出请求之后,WML即从网络上把Deck发送到客户的浏览器,Deck是服务器发送信息的最小单位。用户浏览器收到Deck后,可以浏览其中包含的所有Card。Card用于表示或描述一个或多个用户交互单位。
 
卡片组模板

同一卡片组通常会含有许多卡片,这些卡片的定义、属性或格式通常都大同小异。如果我们逐一定义各个卡片,显然是十分麻烦的。为此,WML提供了卡片组模板的功能,模板内定义了一系列标准和参数,可以应用到同一卡片组的所有卡片中去,从而能够大大地提高我们的编程效率。有关卡片组模板的内容我们后面会专门介绍的。

 
ok,了解了以上这些,wml的基础知识就算over了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息