WML编程 |
| 作者:佚名 来源:本站整理 发布时间:2005-7-13 9:14:22 |
|
元素和标签是wml的主要语法,它们决定了wml编程的基本规则。本章我们就从wml的元素、标签、属性等方面详细讲解wml的编程方法。学习本章知识之前,读者应当了解wml元素与标签的区别。wml的元素通常由一个首标签、内容、其他元素及一个尾标签组成,元素也可以不含有内容。不包含内容的元素称为空元素,它退化成一个单独的标签。也就说,单独的标签是一个元素,成对出现的标签与其包含的内容也构成一个元素。由于元素涉及标签,标签又涉及属性,所以我们本章各节均以元素为主线,通过大量实例分别从卡片与卡片组、事件、任务、变量、用户输入、锚点、图像、时间控制、文本格式等几个方面进行讲解。 卡片、卡片组及其元素 6.1.1 共有属性 wml的所有元素都有两个核心属性,即标识(id)和类(class)属性。它们主要用于服务器方的信息传输。其中,id属性用于定义元素在卡片组中的唯一标识,即它的名称;class属性用于给当前元素定义一个或更多的类(class)。与卡片组一样,类(class)也是有名字的,而且多个元素可以使用一个类(class)名。具有相同类名的单一卡片组中的所有元素均可被看作相同类的一个部分。类名是区分大小写的。如果在class属性列表中,一个元素具有多个唯一的类名,那么该元素可以看作这些类中的一部分。具有同一属性的多个类名必须用两个以上的空格间隔,wml程序执行时将忽略其中多余的类名及其属性。 另外,在wml程序,所有包含文本的元素均具有“xml:lang”属性。该属性用于指定当前元素及其属性所用的描述语言,如英国英语、美国英语、法语、德语等,并可以为用户浏览器选择显示文本的语言提供依据。 6.1.2 wml程序的文件头 <?xml version="1.0"?> <!doctype wml public "-//wapforum//dtd wml 1.1//en" "http://www.wapforum.org/dtd/ wml_1.1.xml"> 编写wml程序时,我们必须写入这两行程序,并放在程序开始的第1、2行。其中,“-//wapforum//dtd wml 1.1//en”是标准通用标记语言sgml(standard generalized markup language)的公共标识;“http://www.wapforum.org/dtd/wml_1.1.xml”是wml程序文档类型的标识。文档类型标识也可以是“text/vnd.wap.wml”或“application/vnd.wap. wmlc”,其中前者指定wml的原文类型,后者指定wml程序编译后代码类型。 6.1.3 wml元素 <wml xml:lang="lang" > 内容(content) </wml> 其中xml:lang="lang"用于指定文档所用语言(前面已有介绍),语言"lang"的值属于nmtoken型数据。 wml元素中包含的内容(content)中除了文本、图像等信息之外,还可以包含head、template及card元素。其中head、template元素如果包含的话则只可包含一次,而card元素必须至少包含一次。有关这些元素的用法我们后面介绍。 下面给出的例程中,wml元素中包含了一个由两个卡片构成的卡片组: <wml xml:lang="en-us"> <card id="card1" title="card 1"> <do type="accept"> <go href="#card2"/> </do> <p> hello world! this is the first card...
</card> <card id="card2" title="card 2"> <p> this is the second card. goodbye. </p> </card> </wml> 程序第1行中的xml:lang属性用于指定文档使用美国英语("en-us")编写。运行该程序时,它将先在wap用户的手机浏览器上显示第1个卡片,当用户激活do元素后,则显示第2个卡片,效果如图6.1所示。 6.1.4 template元素 <template onenterforward="href" onenterbackward="href" ontimer="href" > 内容(content) </template> template元素包含的内容中,除了卡片的一般参数外,还可以包含任意多次的do元素和onevent元素。template元素各属性的功能及用法说明如下: (1) onenterforward。当用户在浏览器中进入当前卡片时,该属性将指定超链(href)的url地址,浏览器将据此打开url指定的卡片或事件。 (2) onenterbackward。与上一属性类似,该属性也可以指定其相应卡片或事件的url地址。如果用户浏览时执行prev任务,那么浏览器就会定位到该属性所指定超链(href)的url地址, (3) ontimer。当指定时间timer过期的时候,用户浏览器就根据ontimer属性指定的url打开相应的卡片。 有关onenterforward事件、onenterbackward事件和ontimer事件的详细情况我们后面将专门介绍。 下面举出的关于template元素的例子中,包含有一个do元素,指定当用户选择prev按钮功能时,就打开浏览的前一个卡片: <template> <do type="prev" label="previous"> <prev/> </do> </template> 下面的例子稍微复杂一些。程序开始定义了一个模板,包含do元素,指定当用户从选项(options)中选择“do1”时,打开系统默认的卡片。随后,程序定义了卡片“first”,它自动套用了刚刚定义的模板。接下来,程序又定义了卡片“second”,并使用同 |
| [] [返回上一页] [打 印] |
|
文章评论 |
