主页spacer>Mergemill 标签指南>spacer分支标签

spacer

内容插入

算术表达式

循环

分支

系统值

统计函数

区段

范例

spacer

IF 结构

<?If(表达式 比较运算符 比较值)?>
<?If(
表达式 = 比较值一; 比较值二; ...)?>
<?If(
表达式 = 首比较值 .. 尾比较值)?>
<?Else?>
<?EndIf?>

下面的例子通过嵌套 IF 结构来实现两个条件的「和」布尔值:

<?If(...)?><?If(...)?> 两个条件皆 true,进行一些动作 <?EndIf?><?EndIf?>

这个例子实现了两个条件的「或」布尔值:

<?If(...)?> 执行一些动作 <?Else?><?If(...)?> 执行相同动作 <?EndIf?><?EndIf?>

IF 标签在循环结构中的一个应用是在网页以一个多列表格呈现项目清单。如果表格单元格设有边界,空白单元格会令表格崩缺。要避免这种情况,你可在一个单元格内使用 IF 结构在插入值是空白的情况下插入「非打破空间」(&nbsp;)。下面是一个例子:

<table width="676" border="0" cellspacing="0" cellpadding="3">
<?LOOP?><tr align="left" valign="top">
<td width="338"><p><a href="<?[类别编号]{1}?>.htm"><?[类别名称]{1}?></a></p></td>
<td width="338"><p><?IF([类别编号]{2}=)?>&nbsp;<?ELSE?><a href="<?[类别编号]{2}?>.htm"><?[类别名称]{2}?></a><?ENDIF?></p></td>
</tr>
<?ENDLOOP?>
</table>

第一列不需前述处理,因为其单元格全都不会是空的。其他表格列则需要 IF 结构按情况插入非打破空间。


连续数据值的比较

<?If(Same[占位栏名称])?>
<?If(Same[
占位栏名称]{列号})?>

这并非一种 <?If(表达式 ...)?> 标签。它没有比较运算符和比较值,same[...] 亦不可被用作表达式内的操作数。你可在此标签内包括列号和占位栏属性,但不可使用查阅扩展。这个标签的符号和关键字串必须紧接,不可包含空白符,否则不能被 Mergemill 识别。

这个分支标签只适用于由数据馈送提取内容的占位栏。它将指定数据列当前的值与前值比较,如果它们匹配便返回 true。因此,如占位栏于循环内,<?IF(SAME[占位栏])?> 会将其当前数据值与前次运行循环时所使用的数据值比较;如占位栏于循环外,则是将其当前值与前次运行模板时的值比较。如果这个标签包括占位栏属性,它们会被同时应用于两个比较值。

如被应用于以动态生成内容的占位栏,这标签只会返回 false。若你要比较这类占位栏内容,可使用变量存储其值,然后使用 <?If(expression...)?> 作比较。如要比较的两个值不在同一数据流,即在数据流前端向后比较或于后端向前比较,此标签亦会返回 false。

请注意,占位栏第一列或无列号的当前数据值总是被认为是巳使用的。如列号大于 1,则只有当 Mergemill 实际按有该列号的占位栏标签或表达式操作数提取的数据值才被认为是巳使用的,在隐藏区段内或在分支结构中被略过的占位栏标签皆不会被考虑。有列号的占位栏如只出现在分支标签(<?IF(...)?>、<?IF(SAME[...)?> 及 <?CASE(...)?>)内,其数据值亦不会被视为巳使用的。

在同名占位栏标签不包含列号的简单情况下,<?IF(SAME[占位栏]{2})?> 会「向前」提取下次运行循环或模板时会使用的数据值与当前使用的作比较。

另一个例子:如某占位栏的最大列号是在 <?[占位栏]{4}?> 标签内,而这标签实际将内容插入输出、给某变量赋值或经隐藏以外的其他区段间接将内容插入输出,你便可使用 <?IF(SAME[占位栏]{5})?>「向前」提取下次运行循环或模板时使用的首个数据值与当前使用的最后数据值作比较。这个操作原则亦适用于其他分支标签如 <?If([占位栏]{5}<0)?>。

space
CASE 结构

<?StartCase?>
<?Case(
表达式 比较运算符 比较值)?>
<?Case(
表达式 = 比较值一; 比较值二; ...)?>
<?Case(
表达式 = 首比较值 .. 尾比较值)?>
<?Case()?>
<?EndCase?>

当 Mergemill 进入一个 CASE 结构,它会运行第一个 true 的 CASE 而略过其余的。由于 CASE() 一定是 true,故在其前面的 CASE 皆返回 false 的情况下一定会被运行。

CASE 结构的一个有用的应用是在一个大型的模板文件实现多个模板的效果。每个子模板文本可包含使用相同数据馈送的占位栏标签。下面是一种可能的结构:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title><?[页面标题]?></title>
</head>
<body>
<?STARTCASE?>
<?CASE([模板编号]=1)?>
... template 1 body contents ...
<?CASE([模板编号]=2)?>
... template 2 body contents ...
<?CASE([模板编号]=...
...
<?CASE()?>
... default template body contents ...
<?ENDCASE?>
</body>
</html>

spacer

内容插入

算术表达式

循环

分支

系统值

统计函数

区段

范例

spacer

返回页首

软件功能spacer::spacer下载专区spacer::spacer购买spacer::spacer软件支援spacer::spacer视频教程spacer::spacer标签指南spacer::spacer网站导览


版权所有 · 不得转载 © 2001-2017 Cross Culture Ltd.