在实际应用中,极少有可能把模板定义在代码中,一般都是存储在文件中。
ST通过StringTemplateGroup加载模板文件,ST中默认的模板文件后缀名为.st。
1、表达式分隔符
在演示加载模板文件之前,不得不说一下默认的表达式分隔符,ST为模板提供了2种表达式分隔符$…$和<…>,它们分别由Antlr3.ST.Language命名空间下的TemplateLexer、AngleBracketTemplateLexer定义,模板(st)的默认表达式分隔符为$…$;模板组(stg)中的模板默认表达式分隔符为<…>(v2.2版默认为$…$)。
如果不想使用这些表达式分隔符,可以通过继承Antlr.Runtime.Lexer来定义自己的表达式分隔符。
下面演示一下使用尖括号作为模板的表达式分隔符:
StringTemplate st = new StringTemplate("<title>", typeof(AngleBracketTemplateLexer)); st.SetAttribute("title", "使用尖括号作为ST表达式分隔符"); Console.WriteLine(st.ToString());
输出:使用尖括号作为ST表达式分隔符
也可以在初始化StringTemplateGroup时指定表达式分隔符。
2、加载模板文件
StringTemplateGroup使用一个templates字典作为在当前group缓存模板,多次加载同一个模板文件,只会从硬盘加载一次。