3.10 テンプレート・ディレクティブの使用

テンプレート・ディレクティブを使用して、置換文字列をサポートする属性の処理方法を制御します。

テンプレート・ディレクティブは、カード・リージョンおよび対話グリッド・リージョンの特定の属性でのみサポートされています。これらのディレクティブは、クライアント側の置換の一部として処理されます。属性でテンプレート・ディレクティブがサポートされているかどうかがわかるように、ページ・デザイナのヘルプに「テンプレート・ディレクティブのサポート」というテキストが表示されます。ディレクティブ構文の詳細は、Oracle Application Express JavaScript APIリファレンスapex.util.applyTemplateを参照してください。

ノート:

大カッコで囲まれた構文の説明テキストはオプションです。大カッコは実際には入力しません。大文字のテキストは、説明で説明されている内容を表します。

3.10.1 if条件ディレクティブ

構文

{if [!]NAME/}
TRUE_TEMPLATE_TEXT
{elseif [!]NAME2/}
ELSE_TRUE_TEMPLATE_TEXT
{else/}
FALSE_TEMPLATE_TEXT
{endif/}

アイテムまたは列に値があるかどうかに基づいてテキストを条件付きで表示するには、ifディレクティブを使用します。NAMEはアイテムまたは列の名前です。列またはアイテムの値がtrueである場合、次のテキストが出力されます。空の文字列であるか、FNまたは0である場合、値はfalseです。falseでない値はすべてtrueです。NAMEが感嘆符(!)で始まっている場合は、値がtrueではなくfalseであるときに、次のテキストが出力されます。

ゼロ個以上のelseifディレクティブを指定できます。elseディレクティブはオプションです。trueである最初のifまたはelseifディレクティブの後のテキストが出力されます。trueであるifまたはelseifがない場合は、elseディレクティブの後のテキスト(ある場合)が出力されます。

Example

カード・レポートに、DESCRIPTIONという名前の列が含まれています。次の「HTML式」属性は、null (空の文字列)でない場合は説明を表示し、それ以外の場合は「No description」を表示します。

{if DESCRIPTION/}&DESCRIPTION.{else/}No description.{endif/}

3.10.2 case条件ディレクティブ

構文

{case NAME/}
{when STRING1/}
TEMPLATE_TEXT1
{when STRING2/}
TEMPLATE_TEXT2
{otherwise/}
TEMPLATE_TEXT
{endcase/}

アイテムまたは列の値に基づいてテキストを表示するには、caseディレクティブを使用します。NAMEはアイテムまたは列の名前です。値がそれぞれのwhenディレクティブの後の文字列と比較され、それらが等しい場合、次のテキストが出力されます。一致するwhenディレクティブがない場合は、otherwiseディレクティブの後のテキスト(存在する場合)が出力されます。比較の前に、値とそれぞれの文字列から先頭と末尾の空白が切り捨てられます。この比較では、大文字と小文字が区別されます。

Example

サンプルのEMP表を使用する次の例では、JOBに応じて報酬が異なる方法で表示されます。営業担当については、給与と歩合の両方が表示されます。社長については、給与のかわりに「--」が表示され、他のすべてのジョブについては、給与のみが表示されます。


{case JOB/}
{when SALESMAN/}
&SAL. (&COMM.)
{when PRESIDENT/}
--
{otherwise/}
&SAL.
{endcase/}

3.10.3 loopディレクティブ

構文

{loop ["SEP"] NAME/}
TEMPLATE_TEXT
{endloop/}

複数値(文字区切り)のアイテムまたは列値でアイテムごとにテキストを1回ずつ繰り返すには、loopディレクティブを使用します。NAMEは、SEPで指定された文字で区切られた複数の値を持つアイテムまたは列の名前です。デフォルトのセパレータは「:」です。SEPが複数の文字である場合は、正規表現として扱われます。

ループ内のテンプレート・テキストでは、次の置換記号を使用できます。

  • APEX$ITEM - これは、リスト内の現在のアイテムの値です。

  • APEX$I - これは、リスト内の現在のアイテムの1ベースの索引です。

Example

次の例は、apples,cherries,pearsのようなタグのカンマ(,)区切りリストを含むTAGSという列を取り、それを、CSSを使用して適切にスタイル設定できるHTMLリストに変換します。

<ul class="tags">{loop "," TAGS/}
  <li class="tag-item">&APEX$ITEM.</li>
{endloop/}</ul>