使用XML技術實現OWC對數據庫的展示(一)

概述:   本文檔介紹瞭如何藉助XML語言實現在Web頁面上的OWC對數據庫中的數據進行展示的方法。由於XML數據可以跨越防火牆,因此該方式可以實現在Internet上對數據進行展現<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

在基於WEB的數據庫分析應用中,常常藉助OWC控件結合HTML實現對數據的表格和圖表兩種方式的展現。一般應用往往採用OWC直接連接數據庫的方式,這會使數據庫連接口令暴露在客戶端,而使數據庫的安全性降低。本文介紹的採用XML作爲OWC和數據庫之間數據交換介質的方式,能夠避免這種對數據庫造成的不安全危險。同時,這也能帶來其他一些好處,例如:使瀏覽器與WEB服務器及數據庫間的交互次數減少,從而加快排序等操作的響應速度,並減少了服務器的負荷。

一、獲取XML數據

將數據庫中的數據轉化爲XML格式的方法很多,本文檔不過多對此進行介紹。從性能、通用性角度考慮,這裏我們採用了ADO直接序列化(持久化Persist)數據的方式,代碼如下:

<!--GetData.asp  -->

<%

dim strConn

strConn="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=test;Data Source=jlwz"

'----------讀取數據----------------

dim conn,rs

set conn=server.CreateObject("adodb.connection")

set rs=server.CreateObject("adodb.recordset")

conn.Open strConn

rs.Open "Select Stat_Date,Call_Num,Call_Fee From CallStat",conn

 

'ADO轉化爲xml dom

Const adPersistXML=1

 

dim objXMLDom

set objXMLDom=server.CreateObject("MSXML2.DOMDocument.3.0")

rs.Save objXMLDom,adPersistXML

set rs=nothing

%>

 

這種方式得到的的XML並不夠簡潔,其中包含了Schema信息。

 

儘管對於OWC中的DataSourceControl控件來說,可以直接採用這種形式的XML數據,但考慮到數據從服務器向客戶端傳輸的效率,我們使用XSLT對這種XML數據進行了轉化。爲此,編寫了如下的Clean.xsl文件:

<?xml version="1.0"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

    xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"

    xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"

    xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">

    <xsl:output omit-xml-declaration="yes"/>

    <xsl:template match="/">

        <xsl:element name="data">

            <xsl:for-each select="/xml/rs:data/z:row">

                <xsl:element name="row">

                    <xsl:for-each select="@*">

                        <xsl:element name="{name()}">

                        <xsl:value-of select="."/>

                        </xsl:element>

                    </xsl:for-each>

                </xsl:element>

            </xsl:for-each>

        </xsl:element>

    </xsl:template>

</xsl:stylesheet>

 

然後,在GetData.asp中通過如下代碼對前面的XML數據進行轉化:

'XSLT清理轉化XML數據

Dim strCleanXML,objXSLT

 

set objXSLT=server.CreateObject("MSXML2.DOMDocument")

objXSLT.load(server.MapPath("Clean.xsl"))

strCleanXML=objXMLDom.transformNode(objXSLT)

 

此時,就得到了我們想要的比較簡潔的XML結構的字符串,可以簡單地將其Response.Write到客戶端:

<data>

  <row>

     <Stat_Date>2003-06-01</Stat_Date>

     <Call_Num>100</Call_Num>

     <Call_Fee>200</Call_Fee>

  </row>

  <row>

     <Stat_Date>2003-07-01</Stat_Date>

     <Call_Num>200</Call_Num>

     <Call_Fee>400</Call_Fee>

  </row>

  。。。

</data>

發佈了32 篇原創文章 · 獲贊 0 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章