将html代码保存到xml文件中并用xsl转换输出到网页中的方法
最近在做酒店的网上会员自助服务项目,其中有一项是介绍会员手册的。由于此项目需要做成产品,而每家酒店的会员手册又不相同,如何做到既能通用又能由用户进行个性化修改而不修改程序呢?
最后采取了用xml的方法,将会员手册的数据保存到xml文件中,由于会员手册有可能会包含图片,表格等html数据,如果我的xml文件考虑得太细则不能通用,于是我将xml文件设置成以下格式:
<?xml version="1.0" encoding="utf-8" ?>
<handbook>
<title>如何成为会员</title>
<content>
<![CDATA[
<table>
<tr>
<td>1</td>
<td>网上直接注册</td>
</tr>
<tr>
<td>2</td>
<td>前台直接办理</td>
</tr>
<tr>
<td>3</td>
<td>传真办理</td>
</tr>
</table>
]]>
</content>
</handbook>
只保留了一个标题和一个内容项,而内容项里需要注意的是包含有:<![CDATA[]]>标签,将需要包含的html代码直接放在其中即可。
在输出的时候进行xsl转换,转换时由于包含有html代码,所以需要将输出项的“禁止输出编码转换”设置为yes,这样在输出的时候就会将html代码直接输出,ie解析的时候就能正常显示相应的结果了。
xslt文件如下:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<table>
<tr>
<td align="center">
<xsl:value-of select="handbook/title"/>
</td>
</tr>
<tr>
<td align="left">
<xsl:value-of disable-output-escaping="yes" select="handbook/content"/>
</td>
</tr>
</table>
</xsl:template>
</xsl:stylesheet>
在会员手册的详细页面中,放置一个XML的控件,设置其DocumentSource,TransformSource属性后调用databind方法即可。当用户想要更改会员手册内容的时候,只需要更改xml文件即可。程序无需再修改和编译。