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

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

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

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

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

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

标签匹配的示例

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

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

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

操作中的运行时表达式

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



Today is: #($ZDATE($H))#


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


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

动作中的编译时表达式

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



This page was last compiled on: ##($ZDATE($H))##


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

This page is #(+$H - ##(+$H)##)# days old.

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


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

你可能感兴趣的:(第四十六章 开发自定义标签 - 标签匹配 操作中的运行时表达式)