首页 > 开发 > XML > 正文

使用XML技术实现OWC对数据库的展示(一)

2024-07-21 02:08:09
字体:
来源:转载
供稿:网友
概述:   本文档介绍了如何借助xml语言实现在web页面上的owc对数据库中的数据进行展示的方法。由于xml数据可以跨越防火墙,因此该方式可以实现在internet上对数据进行展现。
在基于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>

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表