主頁spacer>spacerMergemill 標籤指南spacer>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.