0
string template = "group simple; apply(it) ::= << $it:bold():italics()$ >> ";
StringTemplateGroup stg = new StringTemplateGroup(new StringReader(template));
stg.DefineTemplate("bold", "<b>$it$</b>");
stg.DefineTemplate("italics", "<i>$it$</i>");
StringTemplate st = stg.GetInstanceOf("apply");
st.SetAttribute("it", "name");
Console.WriteLine(st.ToString());

上記の結果は、私が期待していた$it:bold():italics()$です<i><b>name</b></i>

ただし、テンプレートがファイルから読み取られると、期待どおりに機能します。

StringTemplateGroup stg = new StringTemplateGroup("page", "../../Templates");
stg.DefineTemplate("bold", "<b>$it$</b>");
stg.DefineTemplate("italics", "<i>$it$</i>");
StringTemplate st = stg.GetInstanceOf("apply"); //apply.st => $it:bold():italics()$
st.SetAttribute("it", "name");
Console.WriteLine(st.ToString());

出来上がりは期待通り<i><b>name</b></i>

最初のケースで機能しないのはなぜですか?何か不足していますか?

4

1 に答える 1

1

<...> は、グループ ファイルのデフォルトの区切り文字です。注: StringTemplate v4 は 1 週間ほどでリリースされます。

于 2011-03-21T14:50:04.947 に答える