0

0

无线标记语言(WML)基础之WMLScript 基础

陈政宽~

陈政宽~

发布时间:2017-06-28 13:59:33

|

4674人浏览过

|

来源于php中文网

原创

                        wml script是属于无限应用协议wap应用层的一部分,使用它可以向wml卡片组和卡片中添加客户端的处理逻辑,目前最新的版本是1.1版。wml script1.1是在欧洲计算机制造商协议会制定的ecmascript脚本语言的基础上,经过修改和优化而指定的。它能够更好的支持诸如移动电话类的乍带宽通信设备,在wml编程中使用wml script可以有效的增强客户端应用的灵活性,而且,我们也可以把wml script作为一个工具使用,开发出功能强大的wap网络应用和无限网页。本章我们将详细讲解wml script1.1编程的基础预法制时,如基本规则、变量预数据类型、操作赋予表达式等。为了叙述上的简便,以后我们将“wml script1.1”简称“wmlscript ”。 
  4.1 wml 程序中调用wml script函数
  经过前两章的学习,熟悉c语言的读者可能会认识到,wml 的函数功能、逻辑运算功能等都是十分有限的。而wmlscript提供了丰富的函数功能,我们在wap应用开发可以使用wmlscript来增强wml编程。因此,wmlscript成为扩展wml编程能力的主要开发工具。
  4.2 wmlscript的主要优点及其字节码解释器
  wmlscript具有一套定义好的字节码和一个解释器参考结构。无线网络传输中wmlscript的数据均以二进制格式进行传输,所以,用户可以使用乍带宽通信信道,从而能够保持客户端手机只需要最小限度的内存。ecmascript修改后得到的wmlscript能够更快、更小、更容易的编译程序为字节码形式。所有这些特点,是wmlscript具备了wml所不能具备的很多优点和功能。
  4.2.1 使用wmlscript的主要优点
  wmlscript的设计宗旨是为wmlscript系统提供一般的脚本处理能力,使用wmlscript我们可以进一步补充基于xml的wml语言的编程功能,开发针对乍带宽的网络应用及内容,如文本、图像、选择列表等,我们可以使用简单的格式编写出更灵活和更具可读性的用户界面。wmlscript具备的wml所不能具备的优点和功能,主要包括如下几个方面: 
  (1)检查用户输入的合法性:
  (2)扩展用户浏览器的功能,比如允许程序员开发手机的电话呼叫、发送短信息、存储电话号码、管理电话簿或sim卡等;
  (3)生成用户端的确认、提示、警告信息或操作对话框,并使之快速显示在浏览器上;
  (4)在用户浏览器的更改后,能够对浏览器端的软件和参数进行扩展与配置;
  (5)最大程度克服客户端的乍带宽通信连接限制,并提供丰富的程序功能;
  (6)补充wml并使之实现针对微型移动终端设备的多种服务,如支持高级用户界面、增加客户端智能型、提供用户浏览器外围功能的访问能力,以及在服务器与客户端浏览传输数据是减少带宽占用等。
  4.2.2 wmlscript的字节码解释器
  在wmlscript的字节码解释器解释之前,wmlscript语言编写的文本格式的程序将被首先编译为二进制格式的代码。编译时,编译器通常先将wmlscript程序分成若干个编辑单位,每个单位的程序都包含一定数量的语句行和wmlscript函数,然后,wmlscript的编译器将按照这些编译单位,逐一将wmlscript程序作为输入内容,而把对应的字节码作为输出内容。当用户通过wap手机调用wmlscript程序时,编译器的编码功能即被激活、执行。
  4.3 wmlscript基本规则
  wmlscript在许多基本规则方面沿用了wml的做法。不过,由于wmlscript是以c语言为蓝本而指定的,所以它的语法特征和c语言非常相像。如果大家对c语言比较熟悉,那么学习和掌握这部分内容应当是比较容易的。
  4.3.1 wmlscript与url
  与wml一样,wmlscript也沿用了www和html访问资源的url、http等规范,并扩大了url使用的范围。在wmlscript中,不仅超链接、文件路径即文件名可以作为url处理,外部函数、访问控制信息等也可以作为url处理。
  为此,wmlscript采用了wml的变通方法,即改进html命名资源为值的方式,采用程序段锚点(fragment anchor)的形式来处理资源定位。程序段锚点根据文档url规则进行定义,并按照程序段标识符前加井字号(#)的方式书写。使用程序段锚点,wmlscript程序可以在wmlscript编译单位内可任意指定的函数,并可在调用该函数的同时传递所需的参数。
  4.3.2 词法结构
  wmlscript编程中的词法结构并不复杂,我们下面就从大小写敏感、空格、换行、注释即保留字等方面讲解相关的具体规则。
  (1)内容类型。wmlscript的内容类型主要针对文件形式和二进制形式两种情况,类型结构可以在服务器端进行指定,具体形式为:
  文本形式:text/vnd.wap.wmlscript;
  二进制形式:application/vnd.wap.wmlscriptc。
  具体指定方法我们在第4章已经介绍过,这里不再重述。
  (2)大小写敏感。wmlscript1.1是一种大小写敏感的脚本语言。它所设计的各种关键字、变量和函数名都必须合理的使用大小写。
  (3)空格和换行。一般情况下,wmlscript程序值形式将忽略所有的空格、制表符合换行符等。但如果把这些特殊字符通过代码进行表述,或者作为字符串进行处理时,wmlscript将不再忽略它们。了如,字符串"oct 28,2001"中含有空格,该空格在执行时就不会被忽略,它与不含空格的字符串"oct28,2001"是不同的。
  (4)注释。与wml编程一样,在wmlscript脚本程序中也可以加入注释内容。注释内容不被程序执行,且注释不能嵌套。wmlscript的注释方法有两种:
  其一,行注释。即使用双斜行号(//)引导以一行内容,这一行内容全部作为注释内容。如:
//这是以行注释,由双斜杠号开始到结束都是注释。
  其二,块选择。即以符号“/*”开始,而以符号“/*”结束的期间所有内容都是注释内容。如:
/*这就是块注释,加在中间的内容就是注释内容*/
  (5)数据类型与直接编码。wmlscript允许将4种类型的数据直接编码并可嵌套并可嵌如在程序之中。直接编码的4中数据类型为:整数、浮点数、字符串和布尔值。另外,“无效性”值也可直接编码” 1. 整数。当以十进制、十六进制或八进制方式使用整数时,可对这类整数进行直接编码。
  编程序时,十进制的数字均不以0开头,只包含0~9的数值串;十六进制的数据以ox或者ox开头,只包含0~9、a~f或者a~f的字符串;八进制的数均以0开头,只包含0~7的数字串。
  2.浮点数。浮点数通常定义为含有小数点的数字,可以包含小数和指数部分。浮点数的形式较多,可以使十进制的整数或浮点数,可以是分数,也可以是指数;但一个浮点数必须至少有一个数。
  指数是以e或e开头,后面跟着一个整数。指数是以10为底幂。例如:e0时10的零次幂,例如:e0时10的另次幂,e-2时10的负2次幂集等于0.01。指数可以带符号,正好(+)或者减号(-),它们分别代表是正指数和负指数。
  3.字符串。字符串是指定义在成对的双引号("")或单引号(‘ ')之间的内容。
  由于wmlscript只允许使用成对的双引号或但引号来定义字符串,所以程序中使用一个单引号或一个双引号时就会出现编译错误。
  考虑到有些特殊字符不能在字符串中直接显现出来,所以wmlscript提供了转译序列来表示这些特殊字符。
  4.布尔型。它只是ture和false两个数值,用于表示wmlscript中的“真值”或“假值”。布尔型数据可参与异、或等运算,具体规则我们后面介绍。
  5.无效型。也称为“空类型”,它是wmlscript支持的一个表示无效值的量,以invalid表示。该两与c语言中的null类似。
  4.保留字。wmlscript中定义有一个保留字集合,含有一些表示特殊意义的单词这些次不能另外定义,也不能最为其他标识符。wmlscript中的保留字如下:
acces http agent if break isvalid continue meta header
p name p= path domain return else typeof while
equiv url extern use for user function var
  另外,wmlscript还为将来的版本预留了一些保留字,主要有:
case finally catch import class private const public debugger
sizeof default struct do super enum switch export throw
extends try
  wmlscript还有一些没有使用的保留字:
delete null in this lib void new with
  7.标识符。wmlscript的标识符可以指定或命名3种元素:变量、函数和标注。标识符不能以数字开头,但能一段下划线(-)开头,而且,标识符不能是wmlscript的保留字。例如,timeofday、speed 、quality、home_address、_myname、、varo等都是合法的标识符;而以数字或非短下划线的特殊符号开头的字串,以及保留字等都属于不合法的标志赋,如while、for、if、my~name、$sys、123、3piecs、take.this等。
  由于wmlscript是严格区分大小写的,所以字母相同但大小写不同的标识符不是同一个标识,例如,work和work就是不同的标识符。
  8.名称空间。wmlscript提供了比较自由的名称空间,同一标识符可以同时用作不同的目的。例如,作为某一函数名称的标识符,还可以同时用作变量名函数参数、程序标注等,使用时他们的属性或值等并不相互影响。在下面的简单的例程中,mytest这一标识符即用作了函数名,又用作了变量名、函数参数名、函数参数名、常量名。显然,wmlscript的这一特定为我们编写程序提供了很大的方便。

一点PPT
一点PPT

一句话生成专业PPT,AI自动排版配图

下载

当前1/2页 12下一页阅读全文

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

46

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

178

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

51

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

92

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

102

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

227

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

532

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

171

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Rust 教程
Rust 教程

共28课时 | 6.8万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 3.4万人学习

JavaScript
JavaScript

共185课时 | 32.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号