WML Script是属于无限应用协议WAP应用层的一部分,使用它可以向WML卡片组和卡片中添加客户端的处理逻辑,目前最新的版本是1.1版。WML Script1.1是在欧洲计算机制造商协议会制定的ECMAScript脚本语言的基础上,经过修改和优化而指定的。它能够更好的支持诸如移动电话类的乍带宽通信设备,在WML编程中使用WML Script可以有效的增强客户端应用的灵活..
元素和标签是WML的主要语法,它们决定了WML编程的基本原则。本章我们将从WML的元素、标签、属性等方面详细讲解WML的编程方法。学习本章知识之前,读者应当了解WML元素与标签的区别。WML的元素通常有一个首标签、内容、其它元素及一个尾标签组成。也就说,单独的标签是一个元素,成对出现的标签与其包含的内容也构成一个元素。由于元素牵涉及标签..
完成WAP服务器的建立和WAP浏览器的安装之后,我们接下来就可以使用WML语言来编写WAP网页或应用,并通过WAP服务器及浏览器进行调试。从本章开始我们将系统地学习WML语言,本章主要讲解WML语言的基础知识,下一章全面讲解WML的语法、标签和规则。2.1 WML的简单例子及编辑、测试方法无限标记语言WML(Wireless Markup Language)是一种基于扩展标记语..
我们首先以Microsoft 的Internet Infomation Server(IIS 4或IIS 5)以及Unix平台中最为普遍的Apache两种Web Server来介绍如何以它们来建制自己的WAP Sever,将原先已经建制的Web信息平台扩展到无限平台之上。1.1 WAP Sever Configuration其实WAP Sever建制非常容易,WAP在信息传输的部分是使用HTTP来进行的,与现有的WWW信息平台一样,因此,将现..
WAP从1999年开始有实际的开发平台,到了2000已有了较大发展。在新世纪,无线通信的未来可以说是无可限量,但是目前使用者的成长率不如在1998、1999两年的预测乐观。回想1995年WWW刚成气候的时候,并不像现在WAP成长这样缓慢,在几个月之间,WWW网站就从数千个成长到数几万个。形成其间差别的原因很多,而WWW网站与网页制作的工具比目前WAP网站与..
WML是一种基于XML(扩展标记语言)的一种标记语言。这种语言是为无线设备用户提供交互界面而设计的。这些无线设备包括电话、呼机和个人数字助理(Personal Digital Assistants)等等。WML是为具有以下特点的设备而设计的:体积小(相对于个人计算机)。 有限的内存和CPU大小。 通讯带宽窄和时延长。 现在支持WML的设备大致分为两大类:电话 其特..
15.16.1 问题如果一个模式中规定, 在它的之前或之后不能存在某些字符, 应怎样匹配呢?15.16.2 解决办法可以使用负向前查找组”?!”或负向后查找组”?!”来表示那些字符是不应该存在于某个模式之前或之后。而使用正向前查找组”?=”或正向后查找组”?=”则表示这些字符是应该存在于某个模式之前或之后。15.16.3 讨论有些时候, 你想某个模式以后的表..
15.15.1 问题有些情况下, 如果你想对一个模式进行匹配及根据这个结果来找出下一个可能匹配之处。举例说, 对HTML 标签进行匹配的话, 应怎么办呢?15.15.2 解答可以在正则表达式中加入逆向引用来检查最近的匹配结果。15.15.3 讨论在Flash Player 的正则表达式处理引擎中, 逆向引用的结果会以一个列表的形式储存,最多可以储存达99 个的相配结果。在其..
15.14.1 问题如果某些模式只存在于每行的开端或结尾, 或者这个模式占据了一整行, 应该怎样进行匹配呢?15.14.2 解决办法可以在正则表达式中加入”^”和”$”记号。15.14.3 讨论当需要为一个存在于单行, 行首或行尾的模式进行匹配的时候, 可以在表达式的开头加入”^”号, 用以表示该模式一定要在行的起首。而在表达式的结尾加入”&”号的话, 则表示..
15.13.1 问题在一些情况下, 如果想对一些以正则表达式的模式进行匹配的话, 应怎么做呢?15.13.2 解决办法可以使用群组语法, 例如”.”或”+”来为不同的群组进行不同次数的匹配。15.13.3 讨论正如在章节15.12 中所见, “{}”号语法可以用来表示一个子表达式需要匹配的次数及该结果是否需要返回。举例说, 如果你想对包含0 至4 范围内的字符串进行比..
15.12.1 问题如何在一个文本中, 寻找一些有效的IP 地址呢?15.12.2 解决办法可以使用子表达式去验证IP 地址中的每个3 位数组是否有效。15.12.3 讨论根本上一章(章节15.11)所学习过的内容, 一个包含1 位和3 位数目字的IP 地址可以用”\d”标记来匹配的。\d{1,3}如果你想为3 组包含1 和4 位数的数组进行匹配, 可以这样做:(\d{1,4}){3}就如”/d{3}”..
15.11.1 问题怎样在一个正则表达式中对一些字符类型如(整数, 字符, 空格以及它们的反值)进行匹配?15.11.2 解决办法可以通过字符类型标记来实行。15.11.3 讨论通过使用字符类来进行字符匹配一种容易且非常有效的方法。首先, 我们需要建一个包含”\”号的字符类型标记, 它是用来告诉正则表达式处理引擎接下来的字符是一个字符类型而非普通字符。然..
15.10.1 问题如果你想找出一文本中包含元音的词语, 怎样通过正则表达式的指定字符来进行模式匹配呢?15.10.2 解决办法可以使用”[“和”]”来包含所需要进行匹配的字符, 例如: [aeiou]来包括所有元音字母。15.10.3 讨论如果你需要在一个文本中为不同的模式进行匹配的话, 可以在表达式中加入不同的字符标记。然后通过它们来呼叫你想进行匹配的字符..
15.9.1 问题如何创建一个正则表达式用以验证国际标准图书号码(ISBN)呢?15.9.2 解决办法根据ISBN 的特性, 它一般都是一个10 位至13 数字组成, 有时候会以”X”作为结尾, 并会以”-“号来分隔数组。我们需要根据这个特性去创建所需的正则表达式。15.9.3 讨论这条表达式中的”^”号跟”$”限制了该模式只可以存在于单行中。如果一个文本中有多个不同..
15.8.1 问题如何建立一个正则表达式, 用来证验主流的信用卡包括Visa, MasterCard, American Express,Discover 等等呢?15.8.2 解决办法根据以下的原则去创建一个正则表达式:找出起首的几个数字跟哪个信用卡公司的卡相符然后根据相对应的卡的种类, 检查输入的数字是否正确。15.8.3 讨论实际上, 所有主流信用卡号码都会存在着一些用以辨识的数字, 我..
15.7.1 问题怎样辨识任何在文本中被输入或遇到的电邮地址呢?15.7.2 解决办法首先创建一个正则表达式去找出符合name@host.com 格式的电邮地址。接着, 使用global标志来表示该表达式可以用来进行复数匹配。15.7.3 讨论我们所需的表达式就像以下这个:+展开-ActionScriptvarreg:RegExp=/\w+?@\w+?\.\w{3}/g;如果要在一大段的文字中找出相配的电邮地址..
15.6.1 问题如何在多个不同的控件焦点下, 创建及显示复数的验证错误呢?15.6.2 解决办法首先使用ToolTipManager 去创建一个新的ToolTip 类, 并把它放置在控件之上。然后创建一个Style 对象, 把它指派到刚刚创建的ToolTip 类之中, 以做出指定的字型及背景配色。15.6.3 讨论这种错误提示的方式其实是基于ToolTip 组件, 它会在validator 报错的情况被..
15.5.1 问题如何去为多个radio button 及combo box 组件加入验证功能, 以确保最少其中一个项目会被选取?15.5.2 解决办法可以使用NumberValidator 去检查radio button 组件, 再使用一个自定义的Validator 去验证combo box 组件。15.5.3 讨论如果要从radio button 组件群中返回一个ValidationResultEvent 事件, 我们可以使用NumberValidator 去检查..
15.4.1 问题怎样在一个窗体内验证复数的UPC 码呢?15.4.2 解决办法首先创建一个validator, 然后用它来检查UPC 码的检验和是否存在及正确, 否则即返回一个错误。15.4.3 讨论一般商业中使用的UPC 码, 都是由12 个数字所组成的。它包含着一个隐藏的检验和, 这个数是由每个相隔3 位数之积及它们之和相加所得出的。通过以下代码来解释会比较容易去理解..
15.3.1 问题你如何去验证一些南美洲国家的邮政编号呢?15.3.2 解决办法对于不同的国家, 我们可以创建一系列不同的正则表达式使用群组。比如说, 我们可以创建一个自定义的Validator 类用以传递一个国家值。然后, 根据这个值, 呼叫相对应的RegExp 里的doValidation 方法。如果这个值跟RegExp 相配的话, 或者该国家本来就没有邮政编号的话, 就会返回..
15.2.1 问题假如你想创建一个自定义的formatter, 用来接收任何正确的字符串并以一个正确的格式来返回结果, 应怎么办呢?15.2.2 解决办法可以把Formatter 类扩展并把format 方法覆盖重写。15.2.3 讨论在format 方法里头, 可以创建一个名为SwitchSymbolFormatter 的成员并将一个特定格式的字符串传递给SwitchSymbolFormatter 的formatValue 方法, 这..
15.1.1 问题你需要为多个TextInput 和TextArea 控件进行验证和格式化。15.1.2 解决办法对于所有类型的输入数据, 无论是日期, 电话号码或者货币, 都要做以下的步骤:使用Validator 去确保所有输入数据都是有效的。使用Formatter 去规范所有输入数据的格式。15.1.3 讨论如果要让多个validator 和formatter 跟一个组件一起使用的话, 我们就需要为不同..
验证, 格式化及正则表逹式这几个单词给读者的第一印象可能会比较陌生。其实, 开发者在日常的工作中已经不知不觉地接触过不少类似的事物, 比如说: 透过剖析字符串的格式去检测某种模式; 当特定的字符串模式被检测或没有检测到时修改字符串至一定模式; 当一些必要的属性没有被检测到的时候, 返回错误讯息等。因为一些日常事物如电话号码, 姓氏..
今天搞一个表单,发现在w3c浏览器和ie浏览器下的一个问题,w3c浏览器无法使用reset控件或者表单的reset事件来清空通过js设置hidden控件后的值,其他可以显示的控件值是可以还原到原来的状态,但是hidden的话无法还原,郁闷了,(#‵′)靠。 在IE浏览器下可以清空js设置的hidden控件的值,为什么w3c浏览器无法清除呢?⊙﹏⊙b汗....难道我理..
14.9.1. 问题你需要绑定一个目标的属性到一个目标并不明确的动态类对象的一个属性上。14.9.2. 解决办法创建一个mx.utils.Proxy 的字类,实现mx.events.IEventDspatcher 接口,覆盖flash_proxy 名字空间的setProperty 方法,来分发propertyChange 事件。14.9.3. 讨论Proxy 类允许你使用点标语法来存取属性。为了能有效的与动态属性的引用进行工作..
14.8.1. 问题我想通过使用一个顶层的对象实例做为源来绑定到一个属性上。14.8.2. 解决办法使用类mx.utils.ObjectProxy 来在对象与分发绑定的事件间进行交换。14.8.3. 讨论直接创建一个绑定到一个一般的对象上只会在目标对象初始化的时候引入一个更新操作。为了源对象的属性值得到更新的时候,能同时更新目标对象的值,需要使用业ObjectProxy。创..
14.7.1 问题我想创建一个基于某种特殊的而非依赖于propertyChange 事件的数据绑定。14.7.2. 解决办法设置[Bindable]标签的event 属性,使用一个字符串做为类型的参数来进行事件的分发。14.7.3. 讨论Flex 框架中的数据绑定的基础其实是一个基于事件的系统。默认的数据绑定的事件类型是分发到propertyChange 事件。在框架内部,对于目标属性数据的..
14.6.1 问题我想使用一个XML 的数据做为一个绑定的对象的数据来源。14.6.2. 解决办法在使用花括号或者mx:Bindable标签进行数据绑定时使用E4X 来进行数据绑定。14.6.3. 讨论ActionScript 3 中的E4X 语言是用于在语句中来过滤XML 中的数据,且的语法也与ActionScript 语法相近。在这一章节中没有太多的时间来讨论使用E4X 语句的好处的细节,但是它..
14.5.1 问题我想定义一个源属性做为一个链式属性中的一部分。14.5.2. 解决办法使用mx:Binding标签或者花括号,通过使用点连接方式存取一个属性链中的属性,或者在静态方法BindingUtils.bindProperty 和BindingUtils.bindSetter 使用链式的字符串数组做为参数来进行处理。14.5.3. 讨论当一个源属性被在数据绑定表达式中定义,则所有的属性的更改都..
14.4.1. 问题我想去通过ActionScript 而不是MXML 来创建一个数据绑定。14.4.2. 解决办法使用类mx.utils.binding.BindingUtils 来创建mx.utils.binding.ChangeWatcher 对象。14.4.3. 讨论使用ActionScript 来创建数据绑定,当目标更新的时候,可以给你提供更多的可控性。为了使用ActionScript 创建一个数据绑定,使用类BindingUtils 来创建一个Ch..