所有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 第二部分应用层
下载
重新显示当前卡片,但是作者不必假设这个动作一定发生。
相关推荐
第2章“WML Variables and Contexts”讲解了变量替换和变量设置的概念,以及浏览器上下文在WML中的作用,使得开发者可以处理和存储用户交互的数据。 第3章“WML Tasks and Events”探讨了任务和事件,这是WML中实现...
总结来说,WML变量是WML中处理动态数据的关键工具,它们使得在小屏幕设备上构建交互式应用程序成为可能。通过`<setvar>`元素设置和管理变量,以及将变量与输入元素关联,开发者可以实现用户选择的存储和展示,从而...
- **变量引用**:与HDML类似,WML中可以使用`$(var1:esc)`、`$(var1:noesc)`、`$(var1:unesc)`三种形式来引用变量。 - **特殊字符**:保留字符的处理与HDML相似,例如`被替换为`,`>`被替换为`>>`,等等。 #### 三...
- **Variables**:详细介绍变量的作用和用法,包括替换、解析和验证等。 #### 十、WML牌组结构 - **Document Prologue**:文档前言部分,包含了元数据信息。 - **The Wml Element**:定义了整个WML文档的根元素。 ...
- **查找文本**:使用`org.docx4j.wml.Text`类来定位文档中的文本。这通常涉及到遍历文档的XML结构,查找含有目标文本的`<w:t>`元素。 - **替换文本**:找到目标文本后,可以直接修改对应的`<w:t>`元素的内容,...
6. **变量引用**:WML中变量引用与HDML类似,有三种形式: - `$(var1:esc)`:转义变量值,将特殊字符替换为安全的HTML实体。 - `$(var1:noesc)`:不转义变量值,直接显示原始字符串。 - `$(var1:unesc)`:解转义...
在WML中,变量引用的格式类似于HTML的占位符,有三种形式: 1. `$(var1:esc)` - 对变量的值进行转义 2. `$(var1:noesc)` - 不转义变量的值 3. `$(var1:unesc)` - 解析并执行变量内的JavaScript代码 在处理保留字符...
这些变量可以在代码中被引用,用于替换模板中的占位符。 6. 处理复杂报告: 复杂报告可能涉及多级标题、页眉页脚、页码、目录、图表和交叉引用。DOC4J提供API来处理这些元素,比如`PartFactory`用于创建特定类型的...
Table of Contents [内容列表] ...WAP/WML Componentized Templates [组合的模板] Obfuscating E-mail Addresses [拒绝电子邮件地址] 19. Resources [相关资源] 20. BUGS [漏洞] 21. LIST 翻译人员列表
Table of Contents [内容列表] ...WAP/WML Componentized Templates [组合的模板] Obfuscating E-mail Addresses [拒绝电子邮件地址] 19. Resources [相关资源] 20. BUGS [漏洞] 21. LIST 翻译人员列表
5. 变量引用类似于HDML,有三种形式:`$(var1:esc)`、`$(var1:noesc)`和`$(var1:unesc)`,分别对应不同的转义规则。 6. 保留字符的处理与HTML类似,例如`、`>`、`'`、`"`、`&`、`$`和空格需要替换为相应的转义字符。...
为了开启Nginx的GZIP压缩,我们需要在服务定义中添加相关的环境变量。以下是一个示例: ```yaml version: '3' services: nginx: image: nginx:latest volumes: - ./nginx.conf:/etc/nginx/nginx.conf - ./mime...
在这个示例中,`generateData`函数是用于模拟获取新数据的函数,实际项目中应替换为从服务器获取数据的API调用。`page`变量用于跟踪当前页码,`onScroll`函数监听滚动事件,当接近底部时调用`loadMoreData`加载更多...
原文档中的代码被删除,并替换为以下内容: ```html {__NOLAYOUT__} <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> , initial-...