教你如何建手机网站.docx
- 文档编号:29994884
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:36
- 大小:34.28KB
教你如何建手机网站.docx
《教你如何建手机网站.docx》由会员分享,可在线阅读,更多相关《教你如何建手机网站.docx(36页珍藏版)》请在冰豆网上搜索。
教你如何建手机网站
《WAP教程》
第一卷第一章
WML的基本情况[TOP]
用于WAP的标记语言就是WML(WirelessMarkupLanguage)。
WML的语法跟XML一样,WML是XML的子集。
HTML、XML和WML的文件有很多相似之处,这样网页开发者在过去10年中所学的东西今天依然适用。
WML页面文件的后缀是*.WML,就象HTML的*.HTML后缀。
XML规定定义了一个规范的XML文件的规格。
任何违反这个规定的WML文件会出错。
WML文件通常使用XML解释器起来解释。
建立网页制作环境[TOP]
WML文件本身就是文本文件,所以编辑不成问题,顺手的编辑器都可以用。
当然,由于目前的浏览器还都不能显示WML页面,而我们又不能总在手机上进行测试(速度太慢),所以需要模拟器。
现在象NOKIA、ERICSSON、MOTOROLA等手机制造商都生产了相应的产品,你只要下载就行了。
当然除了模拟器以外,还需要图形制作转换器(用来制作WAP格式的图形文件)、字符转码器(汉字〈-〉UNICODE)等等。
WML文件结构[TOP]
WML的页面通常叫做桌面(DECK),由一组互相链接的卡片(CARD)组成。
当移动电话访问一个WML页面的时候,页面的所有CARD都会从WAP服务器下载到设备里。
CARD之间的切换由电话内置的计算机处理,不需要再到服务器上取信息了。
CARD里可以包含文本、标记、链接、输入控制、任务(TASK)、图像等等。
CARD之间可以互相链接。
文档的实体包含在标记中,然后实际的文字段落则包含在
...标记中。
简单例子:
DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN"
"http:
//www.wapforum.org/DTD/wml_1.1.xml">
Helloworld!
显示结果如下:
------HELLO------
HelloWorld!
DECK里面各个组成部分的具体解释在本教程的其他部分有说明。
WML字符集[TOP]
WML是XML的子集,继承了XML的字符集设置。
WML文档缺省的字符集是UTF-8。
要显示中文,有两种办法。
最简单的办法就是在文档头使用encoding,即把第一行改为:
然而令人丧气的是,这种方法有些手机和模拟器并不支持(将来会的),所以目前第2种方法更普遍:
不改变字符集设置,但是在写中文的时候采用UNICODE中文字符,如:
:
通讯录
WML元素:
标记(Tag)和属性[TOP]
WML的主要内容是文本,由于标记会降低与手持设备的通讯速度,所以WML标准里仅仅使用了很少一部分。
用于表格和图像的的标记几乎都被排除了。
与XML一样,在WML语言中,所有元素都放在符号""中,并且包含一个开始标志、一个结束标志和一个内容标志,或者使用自身结束的控制标记。
就象这样:
例如:
Helloworld!
或
例如:
和
WML同样支持在标志中标出属性。
属性是标志的附加信息,与元素的内容不一样,它并不在屏幕上显示出来。
属性通常在元素的开始标志后指定。
如上面最后一个例子。
由于WML是XML的一种应用,因此所有的WML标记和属性都是大小写敏感的(完全不同),而且所有的标记都必须正确地结束。
WML要求属性的值必须放在双引号或单引号内。
单引号可放在属性标志内或双引号内。
字符亦可作为属性的值。
WML注释[TOP]
XML支持这样的注释格式:
这些注释在浏览器中并不显示出来。
WML不支持嵌套元素注释。
链接(URL)[TOP]
WML外部引用方式跟HTML相同
或
内部引用,如果next是当前DECK中的一个CARD时,可以用这种方式:
#next
提供链接功能的WML元素有2个:
(参见)。
CDATA[TOP]
XML支持CDATA的概念,以显示不需要解释的文本。
下面的例子使用CDATA元素在WML页面中显示WML命令文本。
浏览器窗口将显示如下内容:
thisisdata
第一卷第二章
格式
象HTML一样WML可以定义变量,可以让你的页面设计更简单和富有逻辑性。
变量格式如下显示:
$identifier
$(identifier)
$(identifier:
conversion)
圆括号在变量带有空格时使用,第3种格式本节后面说明。
变量的优先权最高,所以当出现与变量符号相同的字符时,它将被认为是变量的标志。
因此如果想在WML页面中显示$符号时必须在其后面再跟一个$符号。
如下例:
Youaccounthas$$1650.00init.
变量名是由US-ASCII码、下划线和数字组成,并且只能以US-ASCII码开头。
变量名大小写敏感。
WML变量没有类型,均表示为字符串。
变量没有被赋值的时候,内容为空,即空字符串。
可以在运行过程中改变它的值。
创建变量
创建变量最简单的方法是使用元素,语法如下:
name="string" value="string"/> 中使用(具体作见本教程任务(TASK))。 下例定义了一个叫vNAME的变量并赋值为“Jeff”: 另外,还可以在中定义变量,参考本教程(任务(TASK)和数据输入) 替换文本[TOP] 变量可以用作替换用途,但只能在文本类型(如显示字符、URL等)中使用。 任何元素和属性都不能使用变量来替代。 例如: Hello,$vNAME. 将显示: Hello,Jeff. ESCAPE转换[TOP] 前面说过变量可以用作替换用途,但是在URL中使用时,变量的内容必须遵守[RFC2396]标准。 这个标准规定某些特殊字符在URL里使用的时候必须用特殊表示方法,即ESCAPE八进制表示。 例如: list.asp? id=3 在URL中要表示为: list.asp%3fid=3 所以变量有可能需要标志为是否对其内容进行ESCAPE转换,变量定义就有如下几种特殊方式: 效果表达方式1表达方式2表达方式3 对变量中ESCAPE字符进行转换$(var: e)$(var: E)$(var: escape) 不进行ESCAPE转换$(var: u)$(var: U)$(var: unesc) 变量中没有ESCAPE字符$(var: n)$(var: N)$(noesc) 给变量进行ESCAPE转换是WML的默认方式,特殊字符ESCAPE码请参考本教程字符实体。 第一卷第三章 ? ? ? ? ? ? CARD里可以显示象文本、图像这样的内容。 象HTML一样,WML也提供一些标记对内容进行排版。 段落与换行标记 [TOP] : 段落标记,用来对段落进行分段。 语法: aligh="left|right|center" mode="wrap|nowrap"; xml: lang="STRING"> aligh: 文字对齐方式,左(left)、右(right)、居中(center)。 mode: 文字超出屏幕时是否折行,各种终端处理方式不同。 xml: lang: 显示语言编码。 : 行分隔标记,产生回车效果。 语法: xml: lang="STRING"/> xml: lang: 显示语言编码。 段落和换行的例子: DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN" "http: //www.wapforum.org/DTD/wml_1.1.xml"> Thisisaparagraph Thisisaanother withalinebreak 显示结果如下: ------Paragraphs------ Thisisaparagraph Thisisanother withalinebreak 标记字体样式 粗体 大字体 强调字体 斜体 小字体 加重强调字体 下划线字体 文字样式标记[TOP] WML提供了一系列文字样式的标记,如右表所示。 不过WML鼓励大家尽量使用标记,因为某些WAP终端会忽略其他标记。 每个文字样式标记语法都一样,都有一个标志语言代码的xml: lang属性。 下面是一个例子: DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN" "http: //www.wapforum.org/DTD/wml_1.1.xml"> 在你的终端上可能会有这样的显示(不过别太当真,前面说了有的终端会忽略文本样式标记): list.asp%3fid=3 所以变量有可能需要标志为是否对其内容进行ESCAPE转换,变量定义就有如下几种特殊方式: -----Formatting----- normal emphasized strong bold italic underline big small 表格[TOP] WML支持简单的表格标记。 语法如下: align="L|R|C" columns="NUMBER" TITLE="STRING" 其他列… 其他行… 在WML里定义一个表格必须先指定列数,即columns属性。 而在表格里就必须有相应数量的标记对。 因该注意的是,align(对齐)属性的内容只能是L(左对齐)、R(右对齐)和C(居中),跟其他标记不同(是不是有点怪? )。 下面的例子演示了表格的基本功能: DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN" "http: //www.wapforum.org/DTD/wml_1.1.xml"> 显示结果(注意WML里没有表格线): ------SALARY------ NAME PAYED Johnson $7810.11 Faye $8912.00 图像[TOP] 相对于多媒体泛滥的HTML网站,在资源紧张的WAP设备上显示图像就有点奇怪了。 但是WML还是提供了图像显示的支持,毕竟一个设计精巧的图像会比一段话表达意思更清楚,或许占用空间更小。 WML支持WBMP(WirelessBitmap)格式的图像,需要用特殊工具制作。 显示图像使用标记,语法如下: alt="STRING" src="STRING" align="top|middle|bottom" height="NUMBER" width="STRING" hspace="NUMBER" vspace="STRING" localsrc="STRING"/> alt: 图像无法显示时的替换文字。 src: 图像的url。 localsrc: 储存于ROM(或RAM)中图像的名字,各种终端支持不同。 align: 上下对齐方式。 height: 图像显示高度。 width: 图像显示宽度。 hspace: 图像左右的空白,以pixel数或百分比表示。 vspace: 图像上下的空白,以pixel数或百分比表示。 上面的属性只有alt和src是必须的。 其他附加属性基本上仅仅用来指示用户终端,大多数情况下会被忽略。 下面是个例子: DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN" "http: //www.wapforum.org/DTD/wml_1.1.xml"> WAP86,! 下面分别是在支持和不支持图像的终端上的显示结果: ---Congratulation--- WAP86,wonderful! 第一卷第四章 ? ? ? ? ? ? 由于网络带宽以及某些WAP服务器DECK传输的限制,所以DECK越小越好,最好不要超过1.2K。 如果你的需求很复杂,最好分成几个DECK来完成。 完整的WML文档结构如下: DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN" "http: //www.wapforum.org/DTD/wml_1.1.xml"> . .头信息...... . .模板定义...... .内容...... .其他card(可有可无)...... XML说明[TOP] DECK开头必须指明以下的XML类型声明: DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN" "http: //www.wapforum.org/DTD/wml_1.1.xml"> 第一行指出XML版本,紧跟的文档类型(DOCTYPE)声明指出所引用的语言标准定义(wml_1.1.xml的内容可以察看本教程附录中的DTD说明)。 这两句的位置和顺序不可更改,而且中间不能有空行。 [TOP] 语法: 表示文档语言为中文。 [TOP] 标签。 语法: domain="STRING" path="STRING"/> 标签,指定该DECK的访问控制信息,它的两个属性是可选的。 domain: 指定域,默认值为当前域。 path: 指定路径,默认值为"/",即根目录。 语法: http-equiv="STRING"|name="STRING" forua="true|false" content="STRING" scheme="STRING"/> 和HTML中提供了该DECK的meta信息。 包括一下三种情况 name="name"UP.LinkServer忽略meta数据 http-equiv="name"UP.LinkServer将meta数据转为HTTP响应头(同HTML) user-agent="agent"UP.LinkServer直接将meta数据传给手机设备 content属性也是必选的,其内容根据属性而定。 scheme属性目前尚不支持。 forua为可选属性,指定在该wml文件传到客户端之前,标签是不是被中间代理删除(因为传输的协议可能改变),默认值为false。 目前支持的meta数据: 指定DECK在手机内存缓存中的存储时间段,默认的为30天(除非内存耗尽),在该期间,手机对于访问过的DECK直接从缓存里调用。 如果信息是对时间敏感的,可以用max-age指定DECK在缓存里的生存期,最小单位是秒,如果指定为0,则每次都需通过连接服务器来调用该DECK。 声明中的处理。 语法: onenterforward="STRING" onenterbackward="STRING" ontimer="STRING"/> onenterforward: 当用户通过CARD时调入的链接。 onenterbackward: 当用户通过退回CARD时调入的链接。 ontimer: 激活时调入的链接。 例子(其中涉及的其他命令参考其他章节): 另外可以参看(EVENT)。 [TOP] 一个DECK可以包含多个CARD,每个CARD的内容可能不止一屏显示,注意DECK、CARD和屏幕显示范围的关系。 一个CARD用包含。 语法: id="STRING" title="STRING" newcontext="true|false" ordered="true|false" onenterforward="STRING" onenterbackward="STRING" ontimer="STRING" xml: lang="STRING"> 每个CARD元素可以有一个标号(ID)和标题(TITLE)。 当然,这都不是必须的。 id: CARD的名字,在DECK中唯一,可用作URL已进行跳转。 title: CARD的标题,用户BOOKMARK一个CARD时的名字。 该属性在某些用户终端上会显示出来。 newcontext: 用来指示当跳转到本CARD时,用户终端(手机、模拟器等)是不是要清除以前保留的信息如变量、堆栈记录、终端状态等。 默认值为FALSE。 ordered: 表明该CARD里的内容是按固定的顺序显示,还是按用户的选择来显示。 默认值是TRE。 这点和HTML不同,CARD页面里的内容可以按一定的顺序显示,默认的是按线性顺序显示,即按代码的顺序,但是,要注意的是,以下三个标签必须按以下顺序来写,(这和以后要讲的“”有关)。 这样做是为了方便填表单,当ordered设置为true时,如果一个表单的内容不能在一屏里显示完,就分成多屏显示;当ordered设置为false时,手机可以显示一个概要CARD来总结有效的选项,用户可以从中选取表单选项来填写。 onenterforward: 当用户通过CARD时调入的链接。 onenterbackward: 当用户通过退回CARD时调入的链接。 ontimer: 激活时调入的链接。 第一卷第五章 前面我们已经讲过如何在WML中显示内容。 不过任何程序员都知道,没有结构和进程就没有程序。 在WML中定义进程有很多方法,最简单的就是任务。 WAP1.1定义了几种类型的任务,任务通过对(有关的详细解释见下一章)的响应改变程序的运行顺序。 有四种WML任务: ·。 [TOP] 这个任务不做任何事情,一般用于屏蔽DECK级(参见桌面和),语法非常简单: 当用户激活该任务时,终端就转回上次用户访问过的URL。 语法如下: 如果元素,就会优先处理。 下面例子定义了一个只有Back按钮的的DECK,按下以后会返回前面看过页面。 DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN" "http: //www.wapforum.org/DTD/wml_1.1.xml"> 当用户激活该任务时,就执行一个刷新过程。 如果这个任务里使用定义了变量,变量值将被重新设置。 语法如下: 如果当前CARD含有优先启动。 下面的例子定义在屏幕刷新时重设firstname、lastname和age变量。 当用户激活该任务时,就引导用户去WML中指定URL,可以是服务器上其他的DECK,也可以是本DECK中其他的CARD。 语法如下: accept-charset="STRING" href="URL" method="post|get"sendreferer="true|false"> href: 必选属性,指向一个合法URL。 如果是其他的DECK,则该DECK的第一个CARD会显示出来。 如果是本DECK中的其他CARD,而堆栈里保存的是最新数据的话,则堆栈保持不变,直接调入该CARD。 sendreferer: 如果为true,用户主体信息(USERAGENT)必须传送给WAP网关。 传送时使用HTTP的提交头信息,即尽可能简短的相对URL。 这个属性可以用来给服务器控制存取URL的权力。 默认值为false。 Method: 值必须为get或post。 分别用来产生HTTP的GET和POST请求。 若为get,则在URL中列出参数,例如: “ Accept-charset: 指定字符集名称列表,服务器在接受的时候必须接受这个编码规则。 默认值为unknown。 具体内容这里不作解释,在以后的高级教程中描述。 下面是一个简单的例子: 向服务器发送HTTP请求。 语法如下: 当用户激活该任务时,就引导用户去WML中指定URL,可以是服务器上其他的DECK,也可以是本DECK中其他的CARD。 语法如下: 下面是一个简单的例子: 当一个含有的任务被执行的时候,终端要完成这样一个过程: 1、识别“名称/值”对并准备参数变量; 2、参数变量转换成正确的字符集; 3、根据URL的ESCAPE规则对参数进行ESCAPE转码,编译成application/x-www-form-urlencoded的MIME类型; 4、根据method指定的请求模式提交任务。 下面的例子演示get模式的用法: 服务器将收到这样的get请求: GET../news.asp? newstype=technology&newstext=wmlHTTP/1.1 . .其他HTTP头信息 . 如果把前面的请求模式改成post,则同样的任务产生的这样的post请求: POST../news.aspHTTP/1.1 content-type="xxx-urlencoded". .其他HTTP头信息 . newstype=technology&newstext=wml 第一卷第六章 任务不能在真空中生存,它们必须绑定倒某个上才能做一些有用的事情。 发生--〉任务执行,这才是完整的进程控制。 有4个元素可以帮助你完成对任务的绑定: 。 链接 象HTML一样,WML也可以定义到其他程序的链接。 在HTML中,链接通常用下划线和特殊颜色的方式表示跟其他内容的区别。 在WAP终端上则没有严格的规则说如何表示一个链接,一般采用反白的显示方式。 的语法如下: title="STRING" xml: lang="STRING" > ,TEXT title: 链接的标题; xml: lang: 语言编码。 在这种定义方式中,实际上链接一般是通过元素完成的。 比如下面的例子定义了2个CARD,点击第一个CARD里的“clickme”链接会跳转到第2个CARD: DOCTYPEwmlPUBLIC"-//WAPFORUM//DTDWML1.1//EN" "http: // Hello, clickme Bye,guys 点击前显示: -------Hello------- Hello, 点击后显 如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。 copyright@ 2008-2022 冰点文档网站版权所有 经营许可证编号:鄂ICP备2022015515号-1