/// <summary>
/// 根据指定路径创建Template实例
/// </summary>
/// <param name="path">路径</param>
/// <param name="encoding">编码</param>
/// <returns></returns>
public ITemplate CreateTemplate(String path, Encoding encoding)
{
TemplateContext ctx = TemplateContext.CreateContext(context);
Template template = new Template(ctx, null);
if (encoding != null)
{
template.Context.Charset = encoding;
}
if (!String.IsNullOrEmpty(path))
{
String fullPath = path;
//判断是否本地路径的绝对形式
if (fullPath.IndexOf(System.IO.Path.VolumeSeparatorChar) != -1 || //win下判断是否包含卷分隔符(即:) c:\user\Administrator\default.html
fullPath[0] == '/') //liunx判断是否为/开头,/usr/share/doc/default.html win下请不要使用/开头的路径
{
ctx.CurrentPath = System.IO.Path.GetDirectoryName(fullPath);
template.TemplateContent = Resources.Load(fullPath, template.Context.Charset);
}
else
{
Int32 index = Resources.FindPath(path, out fullPath); //如果是相对路径,则进行路径搜索
if (Resources.FindPath(path, out fullPath) != -1)
{
//设定当前工作目录 如果模板中存在Inclub或load标签,它们的处理路径会以CurrentPath 设定的路径为基准
ctx.CurrentPath = Resources.Paths[index];
template.TemplateContent = Resources.Load(fullPath, template.Context.Charset);
}
}
}
return(template);
}