关于项目中使用HTML模板与XML模板的比较
来源:互联网 发布:数据决策系统 编辑:程序博客网 时间:2024/06/06 18:01
经常我们做项目需要用到动态构造HTML的功能,这个功能或者用在展示页面,或者用在发送的邮件主体里面。
最常用的做法,我们是采用模板替换的方式,也就是说在HTML中插入一个关键字,然后将关键字替换为我们要构造的HTML代码,最后合成一个整体HTML。
譬如:
接着构造[#Temp]模板的HTML TR代码,并替换,形成一整个HTML文档。
当然,你也可以将此HTML的代码另存为一个HTML文件,当要构造HTML的时候,直接从HTML文件读取HTML文档代码并替换[#Temp]模板。
这种处理方式一个比较方便的地方就是快捷,不用太麻烦的构造页面。但是这种方式有一个缺点,就是当替换的时候需要全文检索,这样当替换的关键字比较多的时候会带来的性能影响。
譬如:
这里还只有8列,当有几十个列,上百个列呢?性能方面那就体现的比较明显了。
所以,这里我推荐一种方式,就是标题上面所说的XML模板方式。
原理:通过XML与XSL配合来构造HTML模板。我展示一个项目实战中的例子。
一. 首先,我们建立一个XML文件EmailTemp.xml:
二.接着,我们建立一个XSL文件EmailTemp.xsl:
注:
<xsl:value-of> 元素用于提取某个选定节点的值。用于提取某个选定节点的值,并把值添加到转换的输出流中。
<xsl:for-each> 元素允许您在 XSLT 中进行循环。可用于选取指定的节点集中的每个 XML 元素。
select 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录。
三.预览XML文件,并调整XSL的样式。一切都到位之后,就可以开始在程序中控制给XML模板添加数据。或者增加XML节点或者替换XML的节点值。这一部分,就相当于我们在HTML模板中构造[#Temp]
对应的TR。
1. 加载XML:
注:ExtendedData代表XML存入数据库中后,从数据库中读取出来的XML文档字符串。
2. 取得XML中的节点:
3. 给节点添加子节点,这里相当于构造HTML模板中的TR:
4. 设置其他节点的值:
四.将XML使用XSL的样式转换为流,并将输出流处理为HTML字符串。
注:这里我们可以直接读取XML与XSL文件,也可以先将XML与XSL文件内容预先存取到数据库中然后再读取,我们项目采取的后者。
因为XSL头文件可以共享:
XML模板的这种方式,其优点就是程序解析效率高,不用到冗长的HTML文档字符串中检索关键字,我们只需要添加节点,修改节点就成。
还有一个优点就是,XML文档形成之后,可以随时预览。虽然使用HTML文件通过替换关键字并重新写入HTML文件的方式也可以达到,但是XML追加或者替换了节点直接保存的效率会比重新写入HTML文件的效率更高些。
- 关于项目中使用HTML模板与XML模板的比较
- code与html分离,PHP中模板的使用
- html中iframe模板的使用
- xml与html的比较
- XML与HTML的比较
- springBoot项目中使用了thymeleaf模板,怎么在html文件中调用外部的.js/css文件
- 一个关于table的html模板
- 在HTML中使用<script>做模板
- magento模板中XML与phtml关系
- 项目中日志的配置及使用模板
- node+express 项目中ejs模板的使用
- Myeclipse使用html模板
- express 使用html 模板
- Express使用html模板
- 关于在spring boot中使用默认的 thymeleaf模板
- XML与ASP简单结合实现HTML模板功能
- XML与ASP简单结合实现HTML模板功能
- XML与ASP简单结合实现HTML模板功能
- QT下sleep的实现
- Ubuntu 下使用Eclipse编译、调试嵌入式程序的方法
- oracle 10g笔记摘要
- substitutes of cscope
- Asp.net 中session存储的三种模式的具体运用(转)
- 关于项目中使用HTML模板与XML模板的比较
- Session持久化比较(转)
- 缓冲区溢出编程心得 转http://fanqiang.chinaunix.net/program/netpro/2006-07-07/4785.shtml
- 模板类之(数组)
- 关于使用gdbserver和eclipse共同调试一个嵌入式程序的方法大纲
- maven项目如何执行main方法
- 【转】MFC绘图(详细)
- Win7系统下VS2005_2008不识别WinCE5 SDK
- update方法返回值的作用