wml标签详细汇总
时间:2008-05-03 来源:一路征程一路笑
1. <a>
这是短格式的锚语法。使用<a>代替<anchor>,并且只用来定义隐含的、指定了URL的<go>任务。
语法
<a href="url" <!-- required --> title="label">
...any valid combination of <text>, <br/> and <img> elements
</a>
2. <anchor>
<anchor>标签将一个格式化的文本和一个任务捆绑在一起。经常被称作超级链接,可以使用任何的文本或图标指定超级链接。当用户选择了超级链接,并且按下ACCEPT,设备就会执行该任务。
语法
<anchor title="label">task text</anchor>
task 表示当用户激活超级链接以后所要执行的动作。text 是设备显示在屏幕上,用来代表超级链接的文本。
task 必须指定下列任务中的一个:<go>、<prev>或<refresh>。
text 设备通常将这段文字与其他的文字区别开。例如使用方括号,或者使用下划线。
title用来标识link的标签。如果不指定title属性,设备将使用“link”作为默认的属性。设备可以以不同的方式使用这个标签。例如,在用户选择的时候可以用来显示一个帮助工具条,或者一个语音提示。为了兼容所有的设备,label最好不要超过5个字符。
例子:
<wml>
<card>
<p>
Some links:<br/>
<a title="Link1"><go href="d1.wml"/>news</a><br/>
<a title="Link2"><go href="d2.wml"/>sports</a>
</p>
</card>
</wml>
3. <access>
<access>标签用来指定WML页面的操作权限。必须在head内和其他的meta信息一起声明。每个页面只有一个<access>标签。所有WML默认的权限是public。
语法
<head>
<access domain="domain" path="path"/>
...
</head>
access的属性包括:
- domain 可对WML页面进行操作的URL域。默认的是当前页面所在的域。
- path可对WML页面进行操作的其他页面所在的根目录。默认的是“/”(当前页面所在的根目录)这就使得所有的在domain域下的页面都可以操作该页面。
4. <b>
<b>指定黑色字体文本。
语法
<b>text</b>
text 是需要使用黑体显示的文本。
例子:
<wml>
<card>
<p>
Press <b>OK</b> to go to the next screen.
</p>
</card>
</wml>
5. <big>
<big>指定大字体的文本
语法
<big>text</big>
text 是所需要以大字体显示的文本。
6. <br/>
<br/>标签用来指定换行。它将使得设备在新行上显示文本的图标。
语法
<br/>
注意:不像HTML所有的WML标签需要一个结尾标志“/”,因此在WML中插入一个新行是<br/>,而不是<br>。
7. <card>
一个WML页面是由一个或多个卡片(card)组成。每个卡片都包含了一套用户和设备交互的操作。设备每次只能显示一个卡片——有些情况下会显示一系列的卡片。
语法
<wml>
<card id="name" title="label" newcontext="boolean"
ordered="true" onenterforward="url" onenterbackward="url"
ontimer="url">
content
</card>
</wml>
content 代表了所有WML卡片的定义和操作的一系列内容:一个timer元素(或者没有)、一个或多个onevent元素、一个或多个do元素、pre元素等一系列的导航信息,此外一个card元素还可以包含一个或多个p元素。
重点:<card>必须遵循以下顺序:<onevent>、<timer> 、<do>。
除了以上列出的,设备将按照所指定的顺序显示元素。
card的属性包括:
- id指定card的名字。
名字是导航时候的依据,例如,可以指定<go href="#cardname"/>来导航(参考<go>)。
- title为卡片指定一个简短的标题。
各种设备对此有不同的用途。
注意: 生产厂家将会显示title,如果那儿有比较充分的屏幕空间。title属性应该看作是对用户的一种提示,而不是卡片所显示的内容。
- newcontext(Boolean类型)
取值为true或者false,默认为false。当用户重新进入的时候 指定设备是否需要初始化卡片中所有的内容。当指定newcontext="true"那么所有的内容重新初始化,并清除历史记录。
- ordered(Boolean类型)
取值为true或者false,默认为true。它指定卡片内容的组织形式。ordered="true"将使得设备按固定的顺序显示内容。否则根据用户选择的顺序来显示内容。
ordered属性可以指定设备在一个卡片中显示多个内容时候的顺序。true 将按线型方式显示(默认的值)。使用这个设置时,将只显示必须的属性。如果设备无法在一屏上显示所有的内容,那么它将分屏显示:
- 指定了field组,有一个或多个<fieldset>(参见<fieldset>)。
- 无效的fields(使用了文本前缀作为每个部分的提示)。
false允许用户在各个部分之间进行任意的导航。使用这个设置,可以不必考虑他们之间的顺序。如果设备不能将所有的部分显示在屏幕上,那么它将会出现一个可供选择的卡片,用户可以导航到每一个部分(根据自己的意愿进行选择或者输入一个选择值)。
- onenterforword(href类型)
如果用户执行<go>,那么就打开指定的URL地址。这个属性是<onevent>的一个简短格式。
- onenterbackword(href类型)
如果用户执行<prev>,那么就打开指定的URL地址。这个属性是<onevent>的一个简短格式。
- ontimer(href类型)
当timer过期的时候,就打开指定的URL。这个属性是<onevent>的一个简短格式。
例子:
<wml>
<card>
<do type="accept">
<go href="#card2"/>
</do>
<p>
Press OK to display the next screen.
</p>
</card>
<card id="card2">
<p>
This screen displays the content of Card 2.
</p>
</card>
</wml>
8. <do>
<do>将用户的交互(例如功能键、声音提示等)和一个任务联系在一起。当用户激活这些功能的时候,设备就执行和<do>相联系的任务。
重点:<do>已经扩展了功能:可以使用图标来作为label。这个功能可以通过嵌入<img>来指定。
例如:
<do type="accept">
<go href="/foo"/>
<img src="img" localsrc="OK" alt="OK"/>
</do>
如果手机支持img、localsrc、src和alt,就应该保持这种顺序。如果不支持,就由alt指定label。如果指定了<img>,那么<do>中的label就被忽略。如果没有指定<img>,那么<do>中的<label>就被使用。
语法
<do type="type" label="label" name="name" optional="boolean">
task
</do>
task 代表将要执行的动作:
do元素必须绑定go、prev、noop、refresh任务中的一个任务。
do的属性包括:
- type
绑定特殊的用户交互事件
可以指定以下的type属性:
- accept激活ACCEPT(功能键,按钮等等)。
- delete激活DELETE(功能键,按钮等等)。
- help激活HELP(功能键,按钮等等)。
- options激活OPTIONS(功能键,按钮等等)。
- prev通过激活PREV导航到另外一个卡片。
- reset激活RESET(清除和重设当前的状态)。
- unknown激活未知道的机制(相当于TYPE="")。
- X-*, x-* 将来用(没有保留)。
- vnd.co-type 激活供应商的一个特定的功能。
如果type 隐含了特殊的用户交互机制。有些设备将功能映射成按键,有些则映射成上下文独立的操作。因此当设计用户交互的时候,要记住不能指定设备将要使用的特别操作机制。
注意: 如果在一个<card>中定义了多个<do>拥有同样的type,那么必须为每个<do>指定不同的name。
- label
label可以标识用户的交互事件。例如,如果将一个任务绑定在ACCEPT键上,那么设备就会将label的值显示在屏幕上,如果不指定,那么默认显示"OK"。为了保证屏幕有足够的宽度,label最多不超过5个字符。如果不支持动态的标签,设备将忽略label属性。
- name
指定<do>的名字。如果卡片级别<do>(定义在<card>中)和页面级别<do>(定义在<template>中)具有同样的名字,卡片级别将将覆盖页面级别。
- optional
取值为true或者false,缺省为false。指定设备是否忽略这个标签。
9. <em>
<em>指定强调文本。
语法
<em>text</em>
text 是需要强调的文本。
10. <fieldset>
<fieldset>允许在一个card中,定义一组text或者输入。指定一个或多个<fieldset>可以控制设备如何显示卡片的内容,用来简化用户的输入。
语法
<fieldset title="label">content</fieldset>
content 表示以下内容中的一个或者多个的组合:control在一个<fieldset>组中,可以指定fieldset、input、select的内容;text也可以在<fieldset> 组中指定格式化的文本。设备对这些文本的使用是大不一样的。例如:作为用户输入的提示,或者描述选项。
<fieldset>的属性:title指定<fieldset>组的标签。一些设备当显示<fieldset>组的时候将作为显示用的标签。其他的也许用作用户交互的提示。
11. <go>
<go>是一个任务标签,它将指导用户去打开一个指定的URL。如果URL是一个指定的卡片,那么设备将显示那个卡片。如果URL是一个指定的页面,那么设备就显示那个页面的第一个卡片。
语法
<go href="url" sendreferer="boolean" method="method"
accept-charset="charset"
<postfield name="data" value="value"/>
content
</go>
content 代表了打开的时候用来设置变量,可以指定一个或更多的变量。
重点:不象其他的WML标签,指定content是可选的。如果不指定content,那么必须使用<go attributes/>代替<go attributes>content</go>。
<go>的属性包括:
- href
将要打开的URL;
- sendreferer
取值为true或者false,缺省为false。指定设备是否要将所发送请求的页面的URL包含在内。如果sendreferer="true" 那么设备就要发送 HTTP_REFERER 头参照请求页面的相对URL。如果将操作权限限制在可信任的设备,那么就可以指定这项为true。
- method
取值为get或者post,缺省为get。指定HTTP的提交方式。指定method="post" 将使得服务器将通过HTTP的头来传递变量。当变量值中有非ASCII字符,可以使用这种方式。如果不指定,那么默认地使用post方式。
- accept-charset
指定字符的编码方式。设备将使用这个属性来确定postfield元素传输的编码。一般来说服务器采用UTF-8作为默认的编码。
注意:accept-charset属性将覆盖HTTP头中的任何的字符编码设置。语法格式为, accept-charset="UTF-8, US-ASCII, ISO-8859-1"。
以下的例子解释了<go>的使用方法:
<wml>
<card title="Employee" ordered="true">
<do type="ACCEPT" label="Find">
<go method="post" href="?next=list"
<postfield name="next" value="list&"/>
<postfield name="L" value="$last&"/>
<postfield name="F" value="$first"/>
</go>
</do>
Partial First Name:
<input title="First Name" name="first"/>
Partial Last Name:
<input title="Last Name" name="last"/>
</card>
</wml>
12. <head>
<head>指定整个页面的头,包括metadata和access控制信息。
语法
<head>
content
</head>
content 代表的是deck-level的头信息,content可以指定仅有一个access或一个或多个meta的内容。下面的例子指定页面的最大过期时间。WML通过<meta>中定义来决定缓冲控制。
<wml>
<head>
<meta http-equiv="Cache-Control" content="max-age=3600" forua="true"/>
</head>
<card>
...
...
</card>
<card>
...
...
</card>
</wml>
13. <i>
<i>指定斜体字的文本。
语法
<i>text</i>
text 是需要按斜体显示的文本。
例子:
<wml>
<card>
<p>
<i>Red</i>, <i>blue</i>, and <i>yellow</i> are primary colors.
</p>
</card>
</wml>
14. <img>
<img>指导设备在格式化的文本中如何去显示一个图片。注意:不是所有的设备都可以显示图片。
注意:不能在<do>或者<option>内指定图片。也不能将图片作为一个功能键的标题或者选项。
语法
<img alt="text" src="url" localsrc="icon" align="alignment" height="n" width="n" vspace="n" hspace="n"/>
<img>包括以下属性:
- alt
指定可选的文本,假如设备无法显示执行的图片。
- src
图片的URL地址。如果指定了一个有效图标的localsrc,那么设备就会忽略这个属性。
- localsrc
已经知道的图标名字。如果设备在ROM中找不到,那么它将从服务器上寻找。如果指定了一个有效的图标,那么将忽略src属性。
- align
取值为top、middle和bottom,缺省为bottom。指定图片的垂直对齐方式。
- height
指定图片的高度。
- width
指定图片的宽度。
- vspace
- hspace
例子:
<wml>
<card>
<p>
Here's a smiley:
</p>
<br/><img alt=":-)" localsrc="smileyface" src=""/>
</card>
</wml>
注意 :一些localsrc在不同的矢量字体下有不同的显示。既然控制不了显示的大小,应该记住在不同的设备上图标的显示差别很小。
15. <input>
<input>可以让用户输入文本或者变量。
语法
text
<input name="variable" title="label" type="type"
value="value" format="specifier"
emptyok="boolean" size="n" maxlength="n" tabindex="n"/>
text 代表了用来提示用户输入的文本或者图片。
input包括以下属性:
- name
变量的名字,设备将用它来保存用户输入的数值。如果变量没有数值,那么设备就将它设为默认的初始状态,也就是空字符串("")。当设备显示<input> 时,变量的数值会出现在输入栏内。
- title
指定一个简短的输入标题。有些设备将其作为一个帮助提示,当显示输入栏的时候。其他的也许将其作为一个交互时使用的标签。
- type
取值为text或者password,缺省为text。指定设备如何显示用户输入的文本。指定 type="text" 使得文本可见;指定 type="password" 使得文本不可见(例如,使用*代替原文本)。注意password方式,不是指加密方式。不能指望它带来安全保障。
- value
该属性是确定默认的数值。
- format
指定用户输入的匹配模式。如果省略这个属性,那么默认的就是*M。
下面是指定格式化掩码的标签:
- A表示任何大写的字符(不包括数字)。
- a任何大写的字符(不包括数字)。
- N任何数字(不包含字符)。
- X任何数字和大写的字符(不能变为小写)。
- x任何数字和小写的字符(不能变为大写)。
- M任何数字和大写的字符,可以大小写切换。
- m任何数字和小写的字符,可以大小写切换。
为了限制用户输入的字符个数,可以指定输入字符的限制,只需要在格式前面加上数字。例如 format="3X" 让用户最多输入3个符号、数字和大写的字符。为了不限制用户的输入,可以通过在格式前面指定“*”。例如:format="*a"可以让用户输入任意多的内容。
- emptyok
取值为true或者false,默认为false。指定用户是否可以空着离开哪个项。指定 emptyok="true" 表明那个项目是可选的。
- size
- maxlength
指定输入框的最大输入长度。默认的是256。
- tabindex
例子:
<wml>
<card>
<p>
First Name:
<input name="fname" maxlength="15" /> <br/>
Last Name:
<input name="lname" maxlength="15" /> <br/>
State:
<input name="state" maxlength="2" emptyok="true" value="CA" /> <br/>
Zipcode:
<input name="zipcode" maxlength="9" /> <br/>
Password:
<input name="password" maxlength="8" type="password" />
</p>
</card>
</wml>
16. <meta>
<meta>元素为WML页面提供各种信息。这个元素是在页面的头部指定有关页面操作控制的信息。
注意:不是所有的设备都支持附加信息。
语法
<head>
<meta http-equiv="Cache-Control" content="max-age=time"
forua= true />
...
</head>
meta的属性包括:
- name
必须指定name的属性:name="name" http-equiv="name"
- content
指定一个和property相关的数据值。
- scheme
- forua
取值为true或者false,默认为true。指定信息是否要发往用户代理。如果为“false”,那么相关的meta信息必须清除然后再发往客户代理。如果为“true”,那么相关的meta信息就直接分发给客户代理。
17. <noop>
<noop>是一个任务元素。它指导设备不做任何事情。这个元素在覆盖页面级别时十分有用。
语法
<noop/>
18. <onevent>
<onevent>和状态转移与内建事件相关。当内建的事件发生,设备将指定一个与<onevent>相关的任务。
语法
<onevent type="type">task</onevent>
这里task 代表当内部事件发生的时候要执行的动作,可以指定go、prev、refresh、noop中的任何一个元素。
type属性标识内建事件,激活指定的任务。如果一个卡片级别的事件和一个页面级别的时间具有同样的类型,那么卡片级别的绑定将覆盖页面级别的绑定。
可以指定以下的类型值:
- onpick 用户选择或者放弃选择一个选项。
- onenterforward 用户执行<go>任务。
- onenterbackward 用户执行<prev>任务,或者激活PREV机制。
- ontimer 一个指定的<timer>过期。
19. <optgroup>
<optgroup>允许在一个卡片中组织多个<option>(或者嵌套的<optgroup>)。创建选择组可以指定设备如何显示一个卡片的内容。
语法
<optgroup title="label">content</optgroup>
这里content 代表一个或多个以下的内容,可以指定以下的元素:
- <optgroup> (嵌套的<optgroup>)
- <option> 设备将按顺序显示所指定的内容。
title属性指定一个简单的标签。有些设备要将这个标签做为标题来使用。有些设备可能作为导航来使用。
20. <option>
<option>在<select>中指定一个特殊的选择项目。
重点:<option>元素已经扩展了功能,允许在<option>文本中加入图片。
例如:
<option value="1">
<img src="/img1" alt="Choice 1"/>
</option>
语法
<option title="label" value="value" onpick="url">
content
</option>
这里content 代表设备将要显示的文本内容以及当用户选中之后所要执行的动作,event可以指定onevent元素, text显示代表选择的文本。
<option>的属性包括:
- title
标识选择项的标记。为了保证和大多数的设备兼容,label 应该最大不要超过5个字符。
- value
指定将要赋给<select>中指定变量的值。如果指定了一个参考变量,那么设备将先测试变量有效性,然后再设置变量。
- onpick
指定在用户选择或者放弃选择(如果使用了多选)的时候,将要打开的URL地址。这个是一个<onevent>的缩写。
例子:
<wml>
<card>
<p>
Please select your favorite color:
<select name="color">
<option value="1">red</option>
<option value="2">blue</option>
<option value="3">green</option>
<option value="4">yellow</option>
</select>
</p>
</card>
</wml>
21. <p>
指定一个具有特定对齐方式和换行方式的新段落。
语法
<p align="alignment" mode="wrapmode">
content
</p>
<p>的属性包括:
- align
取值为left、right或者center。指定显示行的对齐方式。如果没有,那么将采用左对齐方式。
- mode
取值为wrap或者nowrap,缺省为wrap。指定文本的换行方式。如果指定为nowrap,设备将使用另外的机制来显示过长的行,例如:水平滚动。设备将会使用指定的换行模式直到下一个新的指定。换句话来说:如果指定了模式属性,那么设备将应用这种模式。如果没有指定模式,那么设备将使用最后一次所指定的模式。如果以前没有指定过,那么默认采用wrap模式。
22. <postfield>
<postfield>定义了一个将要传送给HTTP 服务器的名字数值对。
语法
<postfield name="name" value="value"/>
<postfield>的属性包括:
- name
表明域的名字标签。
- value
指定的数值
23. <prev>
<prev/>是一个任务元素。它指导设备从当前的堆栈中移走URL,并打开前一个URL。如果堆栈中没有内容,那么<prev>将没有任何效果。
语法
<prev>content</prev>
这里content 代表在打开前一个URL时,所需要设置的变量值。可以在其中指定一个或多个变量:<setvar>。
注意:不像其他的WML元素,<prev>的内容是可选的。如果没有指定任何内容,那么就必须使用<prev/>。
24. <refresh>
<refresh>元素是一个任务元素。它指导设备刷新卡片中的变量。设备当然也将更新屏幕上的变量。
语法
<refresh>content</refresh>
这里content代表需要刷新的元素变量,必须指定至少一个变量:<setvar>。
注意:可以使用<refresh>标签来设置变量的值,但是不可能将它们设置为NULL。
例子:
<wml>
<card title="Employee" ordered="true">
<do type="ACCEPT" label="Find">
<go method="post" url="?next=list">
<postfield name="NEXT" value="list&"/>
<postfield name="L" value="$last&"/>
<postfield name="F" value="$first&"/>
</go>
</do>
<do type="OPTIONS" label="Clear">
<refresh>
<setvar name="first" value=""/>
<setvar name="last" value=""/>
</refresh>
</do>
Partial First Name:
<input title="First Name" name="first"/>
Partial Last Name:
<input title="Last Name" key="last"/>
</card>
</wml>
25. <select>
<select>元素指定用户选择项列表。可以指定单选或者多选。
语法
text
<select title="label" multiple="boolean" name="variable"
default="default" iname="index_var" ivalue="default"
tabindex="n">
content
</select>
这里text 代表用来提醒用户输入的文本或者图像。content 代表可供选择的列表。可以使用<optgroup>或<option>来定义content。
26. <setvar>
当设备执行<go>、<prev>或者<refresh>任务时,<setvar>指定变量的值。
语法
<setvar name="name" value="value"/>
setvar的属性:
- name
需要设置的变量名。如果找不到这个变量,设备将忽略这个<setvar>。
- value
指定变量的值
27. <small>
指定小尺寸的矢量字体的文本。
语法
<small>text</small>
这里text表示需要显示的小字体内容。
28. <strong>
指定所需要特别强调的文本。
语法
<strong>text</strong>
这里text 代表需要特别强调的文本。
29. <table>
<table>允许指定一个行格式化的输出,可以控制整个表格的对齐方式,但不是每个单元格的对齐方式。WML表格和HTML表格很像,但是只有少量的功能。在定义表格的时候,必须声明行数,以及后面的内容。这些内容可以是空行或者列。
语法
<table title="name" align="left|right|center" columns="number of columns">
...row and data declarations
</table>
table的属性包括:
- align
取值为left、right或center,默认为left。指定文本的对齐方式。如果没有指定,那么默认将采用左对齐方式。
- title
指定表格的标签。
- columns
指定每行的列数。指定为0是不允许的。
30. <td>
<td>元素是一个用来装入格子内容的容器。表单的格子可以为空。用户代理必须处理由于使用图像或者链接所带来的多行数据单元格。
语法
<td>content</td>
这里content 代表了在表单格中的文本,或者是<img>和<anchor>元素。可以指定<img>、<anchor>任何一种元素。
31. <tr>
<tr>是一个用来装入表单行的容器。这个表单行可以为空,换句话说,所有的格子都是空的。
语法
<tr>
<td>content</td>
</tr>
这里content 代表表单格子中的内容,可以是文本,或者是<img>和<anchor>。
32. <template>
一个WML页面可能包含一个<template>元素来定义页面级别的事件捆绑。这些事件特点将对页面内的所有卡片起作用,可以通过指定卡片的同名事件捆绑来覆盖某个事件捆绑。
语法
<wml>
<template onenterforward="url" onenterbackward="url"
ontimer="url">
content
</template>
</wml>
这里content 代表了当事件发生时的一般动作,可以指定<do> 、<onevent>的任何一种元素来定义。
template元素包括以下属性:
- onenterforward
如果用户通过<go>任务来浏览一个卡片,那么打开指定的URL。这个属性是<onevent>的一个缩写。
- onenterbackward
如果用户通过<prev>任务来浏览一个卡片,那么打开指定的URL。这个属性是<onevent>的一个缩写。
- ontimer
如果用户通过<timer>过期,那么打开指定的URL。这个属性是<onevent>的一个缩写。
33. <timer>
<timer>提供了在一段时间的交互之后,自动激发任务的功能。任何一种用户的动作都将激活定时器,执行任何任务都将停止定时器。只能在一个卡片中定义一个定时器。
语法
<timer name="variable" value="value"/>
<timer>的属性包括:
- name
name变量用来保存定时器的值。如果变量没有指定初始值,设备将自动使用默认的指定值。如果用户退出卡片,那么这个变量将被设置为当前时间。如果在定时器过期以后,设备将这个变量设置为0。
- value
指定变量的关键属性。必须以1/10秒为单位指定<timer>的值,例如,100等于10秒。将值设置为0将停止timer。如果name在定时器之前已经有了一个值,那么设备将忽略默认的属性。如果变量名还没有值,那么设备将使用指定的数值设置该值。
以下的例子解释了怎么初始化和重新使用一个计数器。当用户访问该卡片的时候,设备都将重新设置定时器的数值。如果定时器没有数值,设备将设置定时器为5秒。当定时器过期以后,设备将自动设置时间。
<wml>
<card ontimer="#card2">
<timer name="time" value="50"/>
<p>
Hello, Unwired World!
</p>
</card>
<card id="card2">
...
...
</card>
</wml>
34. <u>
<u>指定带下划线的文本。
语法
<u>text</u>
这里text 是将要显示下划线的内容。
35. <wml>
<wml>指定一个WML页面。
语法
<wml xml:lang="lang">
<card>
content
</card>
</wml>
这里content 代表定义页面动作的WML元素。
wml的属性“Xml:lang”指定WML文档的语言。所指定的语言属性将覆盖其他任何语言指定语句的功能。
例如:
<wml xml:lang="en-us">
<card>
...
...
</card>