第四十六章 开发自定义标签 - 标签匹配 操作中的运行时表达式

简介: 第四十六章 开发自定义标签 - 标签匹配 操作中的运行时表达式

第四十六章 开发自定义标签 - 标签匹配 操作中的运行时表达式

指定标签的属性值,方法是将属性值放在方括号内,标签名称后是[ ]

<csr:rule>标记的match属性定义了CSP编译器应该将什么识别为规则,然后执行指定的操作。match属性是由/(斜杠)字符分隔的一个或多个标记名组成的字符串。如果有一个以上的标记名,则假定它们是嵌套的,从左到右指定,从最外面的标记到最里面的标记。*(星号)字符是匹配任何标签的通配符。

为了更好地说明这一点,让我们看看下表中的一些匹配值示例。

为匹配的最内层标签触发一个规则。如果相同的标记有多个规则定义,CSP编译器会通过确定哪个匹配值最具体来确定使用哪个规则。例如,AAA/ BBB的规则比BBB的规则更具体。类似地,指定属性值的规则,比如BBB[CCC],比不指定属性值的规则BBB更具体。

标签匹配的示例

匹配值 规则被触发:
AAA 每当遇到<AAA>标记时:<AAA></AAA>
AAA/BBB 每当遇到直接嵌套在<AAA>标签中的<BBB>标签时:<AAA> <BBB></BBB> </AAA>
AAA/*/BBB <BBB>标签嵌套在<AAA>标签的任何地方时:<AAA><FFF> <BBB></BBB> </FFF></AAA>
AAA[CCC] 当遇到带有CCC属性(有任何值)的<AAA>标签时:<AAA CCC= " 10 " ></AAA>
AAA[CCC=22] 当遇到CCC属性值为“22”<AAA>标签时:<AAA CCC= " 22 " ><AAA>
AAA[CCC=22]/*/BBB <BBB>标签嵌套在具有值为“22”CCC属性的<AAA>标签中的任何地方时:<AAA CCC= " 22 " ><FFF> <BBB></BBB> </FFF></AAA>

规则操作中的服务器端表达式和代码

规则中的操作可能包含在执行页面(运行时)或编译页面(编译时)时执行的表达式和代码。

操作中的运行时表达式

要在操作中指定运行时表达式,请使用可以在CSP页面中使用的相同的#(expr)#语法。 例如,下面是一个规则的定义,它定义了一个<TODAY>标签,使用Caché $ZDATE命令显示当前时间:

<csr:rule name="TODAY" match="TODAY" empty>
<csr:action>
Today is: <b>#($ZDATE($H))#</b>
</csr:action>
</csr:rule>
复制代码

如果你加载了这个规则,你可以把它放在CSP页面的主体中:

<TODAY>
复制代码

当请求页面时,显示当前日期。

动作中的编译时表达式

要在操作中指定编译时表达式,请使用##(expr)##语法。 例如,下面是一个规则的定义,该规则定义了一个标记<LASTMOD>,该标记显示CSP页面最后一次编译的时间。 在编译页面时计算##()##表达式。 计算表达式的结果成为生成的CSP页面的静态部分。

<csr:rule name="LASTMOD" match="LASTMOD" empty>
<csr:action>
This page was last compiled on: <b>##($ZDATE($H))##</b>
</csr:action>
</csr:rule>
复制代码

可以在运行时表达式中包含编译时表达式。 在下面的例子中,第一个$H在运行时计算,给出当前日期。 第二个函数在编译页面时计算,返回页面编译的日期。

This page is #(+$H - ##(+$H)##)# days old.
复制代码

<script>操作中的标签

类似地,可以在一个操作中包含多行代码,使用<script language=cache runat=server>标记表示运行时代码,使用<script language=cache runat=compiler>标记表示编译时代码。 例如,下面是一个规则,它创建了一个包含100项的无序列表:

<csr:rule name="BIGLIST" match="BIGLIST" empty>
<csr:action>
<ul>
<script language="Cache" runat=server>
For i = 1:1:100 {
    Write "<li>Item " _ i _ $C(13,10)
}
</script>
</ul>
</csr:action>
</csr:rule>
复制代码

如果你加载了这个规则,你可以像这样把它放在CSP页面的主体中:

<BIGLIST>
复制代码

当请求该页面时,将显示一个包含100项的无序列表。

相关文章
|
1天前
|
安全 数据安全/隐私保护 开发者
解读代码检查规则语言CodeNavi的表达式节点和属性
通过这些内容的详细介绍和实例解析,希望能帮助您深入理解CodeNavi的表达式节点和属性,以及其在代码检查中的实际应用,提高代码质量和开发效率。
23 16
|
4月前
|
XML 前端开发 PHP
ThinkPHP6 模板引擎普通标签中,模板引擎运算符函数,循环标签,判断标签的使用,及一些特殊标签
本文介绍了ThinkPHP6模板引擎中普通标签和XML标签的使用方法,包括模板引擎运算符函数、循环标签、判断标签以及一些特殊标签的使用。文中详细解释了普通标签的运算符和函数、注释、循环标签(foreach、volist、for)和判断标签(if、switch)的语法规范和示例。此外,还提到了literal和php标签用于原样输出和编写PHP代码的方法。
ThinkPHP6 模板引擎普通标签中,模板引擎运算符函数,循环标签,判断标签的使用,及一些特殊标签
|
7月前
去除程序名称 去除程序属性详细信息中的程序名称 创建时间等信息
去除程序名称 去除程序属性详细信息中的程序名称 创建时间等信息
53 0
|
8月前
|
供应链 搜索推荐
偏好类标签支持自定义统计方式,标签场景覆盖更广
在个性化营销场景,零售商必须理解顾客的行为才能更准确的预测客户需求,优化库存管理、制定营销策略,并提供个性化的购物体验,然而偏好类标签的加工不仅仅是简单的属性出现频次或最大值的统计,Dataphin V4.0版本新增了自定义统计的方式加工偏好标签,通过简单的配置即可完成复杂的标签加工场景。
|
JSON 自然语言处理 JavaScript
字符串的解读和标签模板
字符串的解读和标签模板
103 0
Python应用专题 | 17:根据子字符列表过滤掉给定列表
根据子字符列表过滤掉给定列表,从而实现数据的筛查或者去除
|
XML 编译器 Go
第四十五章 开发自定义标签 - 规则和操作
第四十五章 开发自定义标签 - 规则和操作
93 0
AEJoy ——表达式代码列表和示例(一)
AEJoy ——表达式代码列表和示例(一)
234 0
AEJoy ——表达式代码列表和示例(一)
|
Java 开发者
自定义标签之SkipPageException —不再执行标签下面的内容 | 学习笔记
快速学习自定义标签之SkipPageException—不再执行标签下面的内容
128 0
自定义标签之SkipPageException —不再执行标签下面的内容 | 学习笔记

相关实验场景

更多