当前位置: 移动技术网 > IT编程>网页制作>XML > 非常不错的WAP常见问题问答大全(二)第3/3页

非常不错的WAP常见问题问答大全(二)第3/3页

2017年12月08日  | 移动技术网IT编程  | 我要评论
wap常见问题问答大全(二) 二、关于wml的常见问答 1. 简单说wml代表什么?     wml代表“wireless

12. 什么是一个“deck”?
    一个wml文档有许多卡片(cards)组成。一个卡片是一系列完整的wml代码。这些卡片被称为一个“deck”。卡片和“deck”的概念就有点像html中的锚标记<a name="#achor1">和一个html页面。也就是说卡片是“deck”中的一个组成部分。也可以把“deck”称为wml中的页面。它们之间的关系可以比做一副扑克牌。整副扑克牌就是deck,而每一张牌就是card。
13. 什么是wml的“deck”?
    wml的“deck”或者wml文件是指decks。每个deck包含一个或者更多的card。每个deck都以<wml>开始和结束。并且每个card都以<card>开头或者结束。
    当wml微型浏览器处理wml文件或者deck的时候,它阅读整个deck,并且在deck内的各个card之间进行导航。当装入deck的时候,deck里面所有的card都已经装入到内存中,直到浏览器装入另外的deck。
    如果熟悉 html中的<a name>标签。wml的<card>标签将是非常类似的:
<wml>

<card id="start_menu">
...some code...
</card>

<card id="purchase">
...some more code...
</card>

</wml>
    deck和card可以按照这种方式调用:[deckname][#cardname]。如果deckname省略,那么浏览器就会查找当前内存里的cardname名字的card。如果使用了deckname和#cardname,那么浏览器将装入deckname的整个deck,然后跳入到#cardname。这个和html的工作方式很像。
14. wml是大小写敏感的吗?
    是的!要注意wap 1.1使用小写的标签。
15. 如何显示一个美元符号?
    使用两个在一起的美元符号来表示,即“$$”。
16. 想显示价格的格式该怎么办?
    “$”是一个特殊的字符,使用“$$”来显示一个“$”。
    例如:
<p>
    the price is $$11.20
</p>
17. fieldset标签有什么作用?
    编写wml页面的时候要考虑到设备的屏幕很小。如果试图想把一个大的form在一个屏幕里面显示,就要指定那些标签保持在一个屏幕中。那么fieldset标签将这些标签捆绑在一个屏幕上。
18. postfield标签有什么作用?
    postfield标签使允许提交参数到服务器端。注意有些早期的模拟器还不支持该标签,这将给开发工作带来麻烦!
19. wml有类似html的<mailto>标签吗?
    没有。但是你可以使用wml表单和服务端脚本来得到同样的效果。
20. 无法让<input/>格式正常工作是怎么回事?
    至少nokia wml reference没有讲清楚有关<input/>标签的用法。format参数控制着用户输入数据的类型和长度。
    注意到不是所有的wap 1.1浏览器都接受所有的格式化代码。例如:nokia 7110就支持得不是很好。mitsubishi trium在处理“*f”代码的时候有点问题,“*”必须为1或者更大。专门的格式化代码如下:

从a到z的任何大写字母,没有数字或其他字符。 

从a到z的任何小写字母,没有数字和其他字符。 

任何0到9的数字。 

从a到z从0到9的任何字符。 

从a到z从0到9的任何字符。 

任何字符,输入默认从大写开始。 

任何字符,输入默认从小写开始。 
*f 
(星号)意味着任何数字(包括0),f是格式的代码。 
nf 
意味着恰好要输入的字符个数。n从1到9。f是格式代码。 

是转义输出字符。 
    格式化字符可以组合使用来表示一种特定的格式输入。但是强制一定的输入应当避免在用户出错的时候没有提示信息。如果输入是不正确的,该填写的区域一般仍保持空白,直到让用户知道应该输入什么。如果只想输入数字,使用“*n”那么将直接转跳到数字输入模式。如果只想输入大写的字符,使用“*m”转跳到大写输入模式。现举一些例子:
    “n” 只接受一个数字字符。
    “*n” 接受任何数字字符。
    “nn” 只接受2个数字字符,不多不少。
    “ann” 接受一个大写字符(没有数字),后面跟着两个数字,不多不少。
    “x*n” 表示可以接受一个字符(没有数字)后面跟着任意多的数字字符。
    “nnn\-nnn\-nnnn”表示接受美国的电话号码格式,例如:“123-456-1234”。
    “2n\:2n\:2n” 表示接受时间格式,例如:“12:02:34”。
    “nnnnnnnnn” 表示接受9个数字字符。
    “9n” 同样表示接受9个数字字符。 
    maxlength参数控制着输入字符的总个数。
21. 如何防止一个空的field?
    在大多数情况下需要知道用户确实是输入了一些内容在field中,不能让这些内容为空。这个可以通过在服务端的检测来完成,也可以通过wml来完成。
    在wml中,这个检查可以通过合适的格式化代码来完成,或者使用一个在input标签中叫做emptyok="false" 的参数来实现(只有当必须要求用户输入的时候才使用)。如果使用了value="something" 或者value="" 用户仍然可以发送空的fields。
    以下的行将接收任何值到username field, 甚至用户将整个field清空。另外field中没有任何东西,也能够提交form。
        <input name="username" type="text" value="things" format="*m"/> 
    除了用户将整个field清空,以下的行将接收任何值到username field。如果field是空的,他将不能提交form,。
        <input name="username" type="text" value="things" format="m*m"/>
    以上的应用是针对大多数的浏览器。在nokia 7110 ,emptyok参数可以有同样的效果:
        <input name="username" type="text" value="things" format="*m" emptyok="false"/>
22. 使用option标签的时候,无法一屏显示完该怎么办?
    许多wap电话的显示屏幕只能显示三到四个选项。按以下的方法分割option字段就可以输入更多的选项。
<select title="longselectlist">
<optgroup title="option1">
<option>option1-1</option>
<option>option1-2</option>
<option>option1-3</option>
</optgroup>
<optgroup title="option2">
    <option>option2-1</option>
      <option>option2-2</option>
      <option>option2-3</option>
</optgroup>
<optgroup title="option3">
      <option>option3-1</option>
      <option>option3-2</option>
      <option>option3-3</option>
</optgroup>
</select>
23. 想有一个永久的back在屏幕的右下方。有些好像是自动的,若没有,该怎么做?
    可以加入以下代码。
<do type="prev" label="back">
    </prev>
</do>
    更好的是使用template。
……
<template>
    <do type="prev" label="back" name="back">
        </prev>
    </do>
</template>
……
24. wap支持列表吗?
    是的,wap1.1支持列表和相关的标记。
25. 可以在wml中使用表单吗?
    可以。但是nokia 7110在显示表单的时候有些问题。
26. wml支持什么样的表单提交方式?
    wml支持get和post方式。但是nokia 7110在处理get方式的时候有些问题。
27. wml中如何增加参数到url字符串中?
    和html的工作方式很像,如下所示:
……
www.someserver.com/someurl?parameter1=value1&parameter2=value2
……
    唯一的不同是将“&”变成“&”。
28. 如何从wml向asp传送数据?
    假设有一个asp叫做“myasp.asp”,并且有一个wml变量叫做 “wmlvar”。当发出请求“myasp.asp?wmlvar=something”,可以使用下面的方法得到变量的内容。
    dim aspvar
    aspvar = request.querystring("wmlvar") 
    asp变量“aspvar”将包含字符串“something”。当然asp变量也可以与wml变量同名。
29. 如何让wml页面自己更新?
    有过web经验的人喜欢使用:
        <meta http-equiv="refresh" content="1;http://somewhere.com/"> 
    来强制浏览器自动更新。
    虽然在wap中也支持一些meta标签,一个更好的办法是使用<ontimer>标签。
    以下的代码显示了如何自动转跳到另外一个卡片:nextdeck.wml。
<?xml version="1.0"?>
<!doctype wml public "-//wapforum//dtd wml 1.1//en" "http://www.wapforum.org/dtd/wml_1.1.xml">
<wml>
    <card id="splashscreen" ontimer="nextcard.wml">
      <timer value="40"/>
      <p>please wait for the timer to run out...</p>
    </card>
</wml>
    下面的代码将强制浏览器在一段时间后重新装入同一个卡片。这个页面叫做loop.wml。
<?xml version="1.0"?>
<!doctype wml public "-//wapforum//dtd wml 1.1//en" "http://www.wapforum.org/dtd/wml_1.1.xml">
<wml>
    <card id="loop" ontimer="loop.wml">
      <timer value="40"/>
      <p>this text will be shown over and over again...</p>
    </card>
</wml>
    注意必须避免浏览器可能要使用的cache机制。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网