TemplateTextParser キーワード展開仕様

要素の一覧

キーワード要素

指定キーワードをプログラム内部で置換した結果を出力する。

形式

[%Xxxx]
または
[%Keyword:Xxxx]

説明

キーワード"Xxxx"をプログラム内部で指定した値に置換する。

書式付きキーワード要素

指定キーワードを指定書式にしたがってプログラム内部で置換した結果を出力する。

形式

[%Xxxx:zzzz]
または
[%Keyword:Xxxx format=zzzz]

説明

キーワード"Xxxx"をプログラム内部で指定した値に置換し"zzzz"の形式で出力する。
書式指定は.net frameworkの型書式設定に従う

サンプル

[%Xxxx:#,##0]
入力値をカンマ区切りして出力する。左0は出力しない
[%Xxxx:000000]
入力値を書式の桁数分0を付加して出力する。入力値桁数が書式桁数を超えた場合、最大桁数は入力値桁数

リスト要素

指定キーワードをプログラム内部で設定したリストに置換した結果を出力する。

形式

[%List:Xxxx delimiter=","]

説明

キーワード"Xxxx"をプログラム内部で設定したリストに置換しdelimiterで指定した文字で区切り出力する。
書式指定は.net frameworkの型書式設定に従う

サンプル

[%List:Xxxx delimiter=";"]
入力値{"X","Y","X"}の場合
X;Y;Z

定義済み関数要素

指定関数の実行結果を出力する

形式

[%Function:Xxxx]

説明

関数"Xxxx"を実行する

システム日付関数要素

システム日付を出力する

形式

[%Function:SystemDate yyyy/MM/dd]

説明

システム日付を"yyyy/MM/dd"の形式で出力する。
出力形式指定は.net frameworkの日付型書式設定に従う

サンプル

[%Function:SystemDate MM月dd日]
システム日付を"01月02日"のように出力する
※旧来のVisualBasic、Oracleなどの書式指定文字列とは形式が異なるので注意

繰り返し要素

要素を繰り返し出力する

形式

[%Repeat:Xxxx]
contents...
[%EndRepeat]

説明

"Xxxx"で指定した要素をプログラムが必要回数設定し出力する。
プログラムが何も設定しない場合、何も出力しない。
※タグ直後の改行記号は後述の条件指定出力要素とは違い破棄せず出力する。

サンプル

[%Repeat:Xxxx]
説明:[%Remarks]
素材名:[%MaterialName]
URL:[%MaterialUrl]
[%EndRepeat]
出力結果の例

説明:素材1個目
素材名:バナー
URL:http://yahoo.com

説明:素材2個目
素材名:テキスト
URL:http://yahoo.com

説明:素材3個目
素材名:Flash
URL:http://yahoo.com
[%Repeat:Xxxx]の直後の改行が出力されている。※[%EndRepeat]直後の改行は出力する。

条件付き出力要素

指定条件に合致する場合に要素を出力する。また、合致しない場合の要素を記述した場合、合致しない場合の要素を出力する。

形式

[%If:Xxxx (op) val ]
true part contents...
[%Else]
false part contents
[%EndIf]

説明

プログラムで設定した"Xxxx"と"val"を(op)に指定した演算子で評価し、真の場合にtrue part contentsを出力する。偽の場合false part contentsを出力する。
プログラムが何も設定しない場合、何も出力しない。
(op)に指定できるのは"=="(等しい) "<"(小さい) ">"(大きい) のみ
※タグ直後の改行記号は前述の繰り返し要素とは違い破棄して出力しない。

サンプル

[%If:JobBody.Pv > 10000]
PV数が10000を超えています。
[%Else]
PV数が10000以下です。
[%EndIf]
出力結果の例(JobBody.Pv = 20000のとき)
PV数が10000を超えています。
contents部分の改行は出力する。※[%EndIf]直後の改行は出力しない。
valが文字列であり、プログラムがこの文字列と同じキーワードを設定した場合、プログラムで設定した"Xxxx"とプログラムで設定したvalを評価する。
[%If:Input > Output]
黒字です。
[%Else]
赤字です。
[%EndIf]
出力結果の例(Input = 1000,Output = 2000)
赤字です。

サンプルテンプレート

Subject:[%Draft.PrintingPeriod]:[%JobBody.SiteName]/[%JobBody.MenuName]【[%Draft.Status]】[%JobHead.ClientName]/[%JobHead.JobName]
[%JobHead.AgentName] 入稿ご担当者様

お世話になっております。[%LoginUser.OrganizationName] [%LoginUser.UserName]です。

処理: [%List:Draft.FlagList delimiter="; "]

MSNバナー広告掲載申込書

内容: [%Draft.Status]
[%JobDetail.PrintingFrom:MM月dd日 ]より掲載開始

ご契約番号:
商品名:[%JobBody.MenuName]
ページグループ:
[%Repeat:Pages]
[%EndRepeat:Pages]

広告主名(日):[%JobHead.ClientName]
広告主名(英):
代理店名:[%JobHead.AgentName]
契約期間:[%JobDetail.PrintingPeriod]
有料PV数:[%Keyword:JobBody.Pv format=#,##0][%JobBody.PvUnit]想定
[%If:JobBody.Pv > 10000]
	PV数多すぎです。
[%Else]
	PV数少ないですねpgr。
[%EndIf]
ボーナスPV数:
契約金額(グロス):申込みメールをご参照願います。[%Comment:CCIのとき金額]
備考:
----------------------------------------------------------------------------

[%Repeat:Material][%If:Material.InputKind == 1]
GIF名: [%Keyword:Material.MaterialName]
GIFの説明: [%Keyword:Material.Remarks]
[%EndIf]
[%If:Material.InputKind == 2]
テキスト名: [%Keyword:Material.MaterialName]
[%If:Material.Remarks == ""][%Else]
テキストの説明:
[%Keyword:Material.Remarks]
[%EndIf]
[%EndIf]
[%If:Material.InputKind == 3]
MAIL名: [%Keyword:Material.MaterialName]
MAILの説明: [%Keyword:Material.Remarks]
[%EndIf]
[%EndRepeat:Material]


上記内容をご確認の上、受領確認メールをくださいますよう
よろしくお願いいたします。

[%LoginUser.Signature]

---------------------------------------
PMNO:[%Job.PmNo] JOB_NO:[%JobHead.JobNo:00000000]

[PMM[%Pmm:000000000]]
(上記は管理情報になりますので、
削除しないようご協力の程お願い致します)
---------------------------------------
[%Function:SystemDate yy年MM月dd日ddd]
:Material.InputKind == 2のとき、:Material.Remarks == ""であれば"テキストの説明:(改行)"を出力しない

注意など

  • 繰り返し要素と条件付出力要素は改行の扱いが違う
  • キーワードの重複はできない。繰り返し要素と条件付出力要素は入れ子に出来るが内側の要素に定義したキーワードは外側の要素でも同じ値に置換される
  • 繰り返し要素と条件付出力要素は入れ子に出来るが交差することは出来ない
  • 繰り返し要素と条件付出力要素他%End****が定義されている要素について、%End****が定義されていなければテンプレートの最後までをその要素として扱う。
  • プログラムが知らない要素は出力しない。