使用xmldom在伺服器端產生靜態html頁面

來源:互聯網
上載者:User
dom|xml|伺服器|靜態|頁面

伺服器端的產生的頁面資料,為了提高訪問速度,往往需要產生靜態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***/
<%
dimcXMLFile,cXSLFile
dimoXML,XSL
dimoOutput
dimcHtmLFile,cOutputFile

cHtmLFile="book.htm"
'cHtmLFile="book_"&replace(replace(replace(now,":",""),"-",""),"","")&".htm"

cXMLFile=Server.MapPath("book.xml")
cXSLFile=Server.MapPath("book.xsl")
cOutputFile=Server.MapPath(cHtmLFile)

SetoXML=Server.CreateObject("Microsoft.XMLDOM")
oXML.async=false
oXML.load(cXMLFile)

SetoXSL=Server.CreateObject("Microsoft.XMLDOM")
oXSL.async=false
oXSL.load(cXSLFile)

SetoOutput=Server.CreateObject("Microsoft.XMLDOM")
CalloXML.transformNodeToObject(oXSL,oOutput)

oOutput.save(cOutputFile)

SetoXML=Nothing
SetoXSL=Nothing
SetoOutput=Nothing

Response.redirect(cHtmLFile)
%>

/***book.xml***/
<?xmlversion="1.0"encoding="gb2312"?>
<?xml-stylesheettype="text/xsl"href="book.xsl"?>
<moonpiazza>
<book>
<書名>基於XML的ASP.NET開發</書名>
<定價>42</定價>
<作者>DanWahlin/王寶良</作者>
</book>
<book>
<書名>XML應用的UML建模技術</書名>
<定價>32</定價>
<作者>DavidCarlson/周靖侯奕萌沈金河等</作者>
</book>
<book>
<書名>極限編程研究</書名>
<定價>70</定價>
<作者>GiancarrioSucci/MicheleMarchesi/張輝(譯)</作者>
</book>
<book>
<書名>DesignPatterns</書名>
<定價>38</定價>
<作者>ErichGamma/RichardHelm/RalphJohnson/JohnVlissides</作者>
</book>
</moonpiazza>

/***book.xsl***/
<?xmlversion="1.0"encoding="gb2312"?>
<xsl:stylesheetxmlns:xsl=""version="1.0">
<!--下面一句必須-->
<xsl:outputmethod="xml"encoding="gb2312"indent="yes"/>

<xsl:templatematch="/">
<html>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
<!--bymoonpiazza2003.6.13-->
<body>
<tableborder="1">
<tr>
<xsl:for-eachselect="moonpiazza/book[position()=1]/*">
<td><xsl:value-ofselect="name()"/></td>
</xsl:for-each>
</tr>
<xsl:for-eachselect="moonpiazza/book">
<tr>
<xsl:for-eachselect="./*">
<td><xsl:value-ofselect="."/></td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>

</xsl:stylesheet>



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。