服务器端的生成的页面数据,为了提高访问速度,往往需要生成静态的htm页面。
通常,可以使用fso生成静态的htm页。
但如果是fso被禁止或没有使用fso的权限,就需要其他的方法来解决.
利用xmldom,使用其save()方法就是一个很好的解决之道.
而且,如果数据是xml格式,使用save()比使用fso速度要快,代码的复用率也高。
但需要注意的是:
调用xmldom.save()方法时,默认的编码方式是"uft-8".
如果指定文档输出类型为"html",由于其不可指定编码类型,当数据中含有中文字符,就会发现保存的htm数据中,所有中文字符都变成了乱码.
解决方法:
机制,通常浏览器对于html类型的页面,对于htm标记以外的标记并不进行解释.
a.指定输出文档类型为"xml"
b.指定编码(encoding="gb2312")
c.指定保留缩进格式(以方便阅读)
examples:
/*** create.asp ***/
1
2dim cXMLFile, cXSLFile
3dim oXML, XSL
4dim oOutput
5dim cHtmLFile, cOutputFile
6
7
8cHtmLFile = \"book.htm\"
9\'cHtmLFile = \"book_\" & replace( replace( replace (now,\":\",\"\"), \"-\", \"\"), \" \", \"\") & \".htm\"
10
11cXMLFile = Server.MapPath(\"book.xml\")
12cXSLFile = Server.MapPath(\"book.xsl\")
13cOutputFile = Server.MapPath(cHtmLFile)
14
15Set oXML = Server.CreateObject(\"Microsoft.XMLDOM\")
16oXML.async = false
17oXML.load(cXMLFile)
18
19Set oXSL = Server.CreateObject(\"Microsoft.XMLDOM\")
20oXSL.async = false
21oXSL.load(cXSLFile)
22
23Set oOutput = Server.CreateObject(\"Microsoft.XMLDOM\")
24Call oXML.transformNodeToObject(oXSL, oOutput)
25
26oOutput.save (cOutputFile)
27
28Set oXML = Nothing
29Set oXSL = Nothing
30Set oOutput = Nothing
31
32Response.redirect(cHtmLFile)
/*** book.xml ***/
1<moonpiazza>
2<book>
3<书名>基于XML 的 ASP.NET开发<!--书名-->
4<定价>42<!--定价-->
5<作者>Dan Wahlin/王宝良<!--作者-->
6</book>
7<book>
8<书名>XML应用的UML建模技术<!--书名-->
9<定价>32<!--定价-->
10<作者>David Carlson/周靖 侯奕萌 沈金河等<!--作者-->
11</book>
12<book>
13<书名>极限编程研究<!--书名-->
14<定价>70<!--定价-->
15<作者>Giancarrio Succi/Michele Marchesi/张辉(译)<!--作者-->
16</book>
17<book>
18<书名>Design Patterns<!--书名-->
19<定价>38<!--定价-->
20<作者>Erich Gamma/Richard Helm/Ralph Johnson/John Vlissides<!--作者-->
21</book>
22</moonpiazza>
/*** book.xsl ***/
1<xsl:stylesheet 1999="" \"="" _http:="" transform_="" version='\"1.0\"' www.w3.org="" xmlns:xsl='\"' xsl="">
2<!-- 下面一句必须 -->
3<xsl:output encoding='\"gb2312\"' indent='\"yes\"/' method='\"xml\"'>
4<xsl:template match='\"/\"'>
5<html>
6<meta charset="utf-8" content='\"text/html;' http-equiv='\"Content-Type\"'/>
7<!-- by moonpiazza 2003.6.13-->
8<body>
9<table border='\"1\"'>
10<tr>
11<xsl:for-each select='\"moonpiazza/book[position()=1]/*\"'>
12<td><xsl:value-of select='\"name()\"'></xsl:value-of></td>
13</xsl:for-each>
14</tr>
15<xsl:for-each select='\"moonpiazza/book\"'>
16<tr>
17<xsl:for-each select='\"./*\"'>
18<td><xsl:value-of select='\".\"'></xsl:value-of></td>
19</xsl:for-each>
20</tr>
21</xsl:for-each>
22</table>
23</body>
24</html>
25</xsl:template>
26</xsl:output></xsl:stylesheet>