`
wuhua
  • 浏览: 2114209 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

WML 中的变量替换

    博客分类:
  • HTTP
阅读更多

所有W M L内容可以参数化,使作者具有更大的灵活性,能生成具有良好的缓存行为和感

觉上交互性更好的卡片和页面。W M L变量可以代替字符串,并且可以在运行时用它的当前值

替换。

如果变量值不为空字符串,则变量要被置初值。如果变量值等于空字符串、未知或在当

前浏览器内容中未被定义则变量值不用被设置。

1. 变量替换

变量值可以被替换成一个卡片的文本(# P C D ATA)和W M L元素的% v d a t a和% U R L属性值。

只有文本信息可以被替换,元素或属性不能被替换。在用户代理中,变量替换在运行时发生,

它被定义成一个字符串替换操作,而且不会影响变量的当前值。如果未被定义的变量被引用,

结果被替换成一个空字符串。

W M L变量名包含一个U S - A S C I I字母,或后面跟着零或多个字母、数字的下划线,或只是下划线,任何其他的字母都是非法的。变量名区分大小写。

下面是一个变量替换语法的B N F式描述。除了用字符“ |”表示可选之外,这个描述使用

[ R F C 8 2 2 ]中建立的惯例。简单地讲,用“(”和“)”来组合元素,而可选的元素括在“ [”和

“]”内。元素前可用< N > *定义,表示这个元素N次或更多次的重复(未指定时N默认为零)。

var = ( "$" varname ) |

( "$(" varname [ conv ] ")" )

conv = ":" ( escape | noesc | unesc )

escape = ("E" | "e") [ ( "S" | "s" ) ( "C" | "c" )

( "A" | "a" ) ( "P" | "p" )

( "E" | "e" ) ]

noesc = ( "N" | "n" ) [ ( "O" | "o" ) ("E" | "e")

( "S" | "s" ) ( "C" | "c" ) ]

unesc = ( "U" | "u" ) [ ( "N" | "n" ) ("E" | "e")

( "S" | "s" ) ( "C" | "c" ) ]varname = ( "_" | alpha ) *[ "_" | alpha | digit ]

alpha = lalpha | halpha

lalpha = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" |

"j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" |

"s" | "t" | "u" | "v" | "w" | "x" | "y" | "z"

halpha = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" |

"J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" |

"S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z"

digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" |

"8" | "9"

若从周围的上下文中不能推断出某变量,则在该变量结尾处要加上圆括号(例如,一个

如空白的非法字符)。例如:

This is a $var

This is another $(var).

This is an escaped $(var:e).

Long form of escaped $(var:escape).

Long form of unescape $(var:unesc).

Short form of no-escape $(var:N).

Other legal variable forms: $_X $X32 $Test_9A

变量值被替换时可以转换成其他不同的格式,转换可在变量引用中定义,跟在冒号后面。

表4 - 3概括了当前的转换和它们的合法缩写:

表4-3 变量扩展方式

转换作用

无扩展没有改变变量值

扩展U R L扩展变量值

未扩展U R L未扩展变量值

在变量替换时的转换不会影响变量的实际值。

[ R F C 1 7 3 8 ]中详细描述了U R L的转义。像在[ R F C 1 7 3 8 ]中规定的一样,所有在W M L中定义的词法敏感的字符必须被转义,包括所有保留的和不安全的U R L字符。

如果没有指定转换类型,将使用适合上下文的变换格式替换变量。在没有进行转换的地

方,O N E N T E R B A C K WA R D、O N E N T E R F O RWA R D、U R L和S R C属性默认为扩展转换。按

照规定,n o s c转换将使一个变量的上下文相关转义被禁止。

2. 变量替换语法分析

在所有的X M L分析完成之后,再进行变量替换语法(如$ x)分析。在X M L术语中,

X M L处理程序分析完文件并向X M L应用程序提供了分析结果报表后,再进行变量替换分析。

在该规范的上下文中, W M L语法分析程序和用户代理是X M L应用程序。

这意味着在分析了X M L结构(如标签和实体)之后,再进行所有变量语法分析。在变量

分析的上下文中,所有的X M L语法比变量语法有更高的优先权,例如,实体替换发生在变量

替换语法分析前。下面的例子等同于名为x的变量:$ x

& # x 2 4 ; x

$ & # x 5 8

& # 3 6 ; & # x 5 8

3. $符号

分析规则的一个副作用是文字中的美圆符号必须编码成一对$符号实体,单独的$实体,

甚至诸如& # x 2 4这样的定义,将导致一个变量替换。

为了在W M L页面中包括一个$符号,必须对其进行转义。这可用下面的语法实现:

一行中的两个$符号被单独的$符号代替。例如:

This is a $$ character.

这将显示为:

This is a $ charac为了使U R L扩展字符串包括$符号,可以用U R L扩展形式定义它:

% 2 4

4. 变量赋值

有多种方法为变量赋值。当为一个已经在浏览器上下文中定义的变量赋值时,这个变量

被赋予当前值。

作为导航的另一个作用, VA R元素允许作者设置变量的状态。VA R可以在任务元素中定

义,包括G O、P R E V和R E F R E S H。VA R元素指定变量名和变量值,例如:

<VAR NAME="location" VALUE="$(X)"/>

作为导航的另一个作用, N A M E属性中定义好的变量可以被赋值(如: l o c a t i o n)。有关

VA R元素的处理过程更多的信息,参见对事件处理的讨论(第4 . 6节和第4 .9 . 5节)。

输入元素建立根据用户输入信息的K E Y属性设置的变量。例如, I N P U T元素把输入的文

本分配给变量,而S E L E C T元素则负责分配所选O P T I O N元素的VA L U E属性值。

当用户把输入提交给I N P U T或S E L E C T元素时,用户的输入便被写进了变量。提交交输入是

一个与M M I有关的概念,而且W M L的作者不必依赖特定的用户接口,例如,有些实现用每个

进入I N P U T元素的字符更新变量,而其他的一些实现会推迟变量更新,直到I N P U T元素失去

焦点。在执行任何任务之前,用户代理必须更新所有的变量。在设置变量时,用户代理可能

6 4 第二部分应用层

下载

重新显示当前卡片,但是作者不必假设这个动作一定发生。

 

1
0
分享到:
评论

相关推荐

    Learning WML & WML Script

    第2章“WML Variables and Contexts”讲解了变量替换和变量设置的概念,以及浏览器上下文在WML中的作用,使得开发者可以处理和存储用户交互的数据。 第3章“WML Tasks and Events”探讨了任务和事件,这是WML中实现...

    WAP教程(8):WML 变量-XML/XSLT

    总结来说,WML变量是WML中处理动态数据的关键工具,它们使得在小屏幕设备上构建交互式应用程序成为可能。通过`&lt;setvar&gt;`元素设置和管理变量,以及将变量与输入元素关联,开发者可以实现用户选择的存储和展示,从而...

    wml学习笔记(非常不错的哦)

    - **变量引用**:与HDML类似,WML中可以使用`$(var1:esc)`、`$(var1:noesc)`、`$(var1:unesc)`三种形式来引用变量。 - **特殊字符**:保留字符的处理与HDML相似,例如`被替换为`,`&gt;`被替换为`&gt;&gt;`,等等。 #### 三...

    WAP WML(英文版)

    - **Variables**:详细介绍变量的作用和用法,包括替换、解析和验证等。 #### 十、WML牌组结构 - **Document Prologue**:文档前言部分,包含了元数据信息。 - **The Wml Element**:定义了整个WML文档的根元素。 ...

    docx4j 替换文本

    - **查找文本**:使用`org.docx4j.wml.Text`类来定位文档中的文本。这通常涉及到遍历文档的XML结构,查找含有目标文本的`&lt;w:t&gt;`元素。 - **替换文本**:找到目标文本后,可以直接修改对应的`&lt;w:t&gt;`元素的内容,...

    WML学习之一概述和基本规则

    6. **变量引用**:WML中变量引用与HDML类似,有三种形式: - `$(var1:esc)`:转义变量值,将特殊字符替换为安全的HTML实体。 - `$(var1:noesc)`:不转义变量值,直接显示原始字符串。 - `$(var1:unesc)`:解转义...

    wap教程 java wap jsp

    在WML中,变量引用的格式类似于HTML的占位符,有三种形式: 1. `$(var1:esc)` - 对变量的值进行转义 2. `$(var1:noesc)` - 不转义变量的值 3. `$(var1:unesc)` - 解析并执行变量内的JavaScript代码 在处理保留字符...

    DOC4J操作word文档

    这些变量可以在代码中被引用,用于替换模板中的占位符。 6. 处理复杂报告: 复杂报告可能涉及多级标题、页眉页脚、页码、目录、图表和交叉引用。DOC4J提供API来处理这些元素,比如`PartFactory`用于创建特定类型的...

    Smarty中文手册 chm版

    Table of Contents [内容列表] ...WAP/WML Componentized Templates [组合的模板] Obfuscating E-mail Addresses [拒绝电子邮件地址] 19. Resources [相关资源] 20. BUGS [漏洞] 21. LIST 翻译人员列表

    smarty手册.chm

    Table of Contents [内容列表] ...WAP/WML Componentized Templates [组合的模板] Obfuscating E-mail Addresses [拒绝电子邮件地址] 19. Resources [相关资源] 20. BUGS [漏洞] 21. LIST 翻译人员列表

    wap开发教程.pdf

    5. 变量引用类似于HDML,有三种形式:`$(var1:esc)`、`$(var1:noesc)`和`$(var1:unesc)`,分别对应不同的转义规则。 6. 保留字符的处理与HTML类似,例如`、`&gt;`、`'`、`"`、`&`、`$`和空格需要替换为相应的转义字符。...

    docker下nginx配置压缩字体和图片等配置

    为了开启Nginx的GZIP压缩,我们需要在服务定义中添加相关的环境变量。以下是一个示例: ```yaml version: '3' services: nginx: image: nginx:latest volumes: - ./nginx.conf:/etc/nginx/nginx.conf - ./mime...

    实现表格动态滚动效果

    在这个示例中,`generateData`函数是用于模拟获取新数据的函数,实际项目中应替换为从服务器获取数据的API调用。`page`变量用于跟踪当前页码,`onScroll`函数监听滚动事件,当接近底部时调用`loadMoreData`加载更多...

    TP5框架页面跳转样式操作示例

    原文档中的代码被删除,并替换为以下内容: ```html {__NOLAYOUT__} &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt; , initial-...

Global site tag (gtag.js) - Google Analytics