动态产生XML文档的几种方式

时间:2007-10-15 18:30:00 

l当今世界,技术发展迅猛,不论是什么行业,大多数关键数据都是放置于数据库中进行管理的,一来目前数据库技术已经相当成熟,二来其管理功能非常强大。以往的数据库应用,其数据底层结构一般来说都是相对固定,也就是说,开发出来的应用程序是针对具体的数据结构,其应用范畴受到一定限制,开放性较差。

XML作为一种可扩展性标记语言,其自描述性使其非常适用于不同应用间的数据交换,而且这种交换是不以预先规定一组数据结构定义为前提,因此具备很强的开放性,具有广阔的应用前景。为了使基于XML的业务数据交换成为可能,就必须实现数据库的XML数据存取,并且将XML数据同应用程序集成,进而使之同现有的业务规则相结合。开发基于XML的动态应用,如动态信息发布、动态数据交换等,就是要能从数据库中取出数据,并动态产生XML文档。当前动态产生XML文档主要有以下几种方式:

由数据库直接产生 在这一方面,Oracle和Microsoft走在其他厂商的前面。Oracle做为全球第一大数据库及数据库应用解决方案提供厂商,早在1999年就率先推出支持XML的数据库产品Oracle 8i。Microsoft在2000年1月宣称其下一版本SQL Server(代号为Shiloh),将是一个完全支持XML的产品,利用该产品,用户可以在Web浏览器下输入一个URL地址,即可访问SQL Server数据库,而返回的结果可以是一个XML文档。另外,它还允许通过输入样式参数,指定样式信息,以便在浏览器中输出丰富的页面。一个典型的URL如下所示:href = http: // localhost / Northwind ? sql = select + firstname,lastname + from + employees + for + xml + auto。

由Web中间件产生 当Web服务器收到请求,就由中间件进行数据库查询,然后将查询结果转化为XML格式。现在有一些工具提供了XML与数据库的连接过程大都遵循这样的步骤。下面是一个利用ASP直接生成XML文档的例子。



<%@ language="VBScript" %>
<?xml version="1.0" encoding="gb2312"?>
<?xml:stylesheet type="text/xsl" href="roster.xsl"?> 
<roster>

————下面连接数据库————




<% 
set cConn = Server.CreateObject("ADODB.Connection")
call cConn.Open("DSN","USER", "PWD")
set rs = cConn.Execute("SELECT DISTINCT * FROM roster") 
Do While Not rs.EOF %>

————下面产生XML————




<Record>
<Name><%=trim(rs("name"))%></Name>
<NativePlace><%=trim(rs("NativePlace"))%></NativePlace>
<Age><%=trim(rs("Age"))%></Age>
<Telephone><%=trim(rs("Telephone"))%></Telephone>
</Record>
<% rs.MoveNext 
Loop
rs.Close
set rs=nothing
set cConn=nothing
%>
</roster>  


这种方式已经在大富翁论坛(http://www.delphibbs.com)上得到了应用,大富翁论坛也制作了离线浏览器,其实质就是用ASP查询返回的XML数据文档在应用程序中进行处理。


由其他应用程序产生 正是XML自描述性使其非常适用于不同应用间的数据交换,基于XML数据交换的系统之间交换数据就是一个产生、传输和处理XML文档的过程,因此许多编程工具已经发布了支持XML的新版本,在Delphi 6中已经推出支持XML数据交换的一系列控件,开发数据交换应用程序已经不再是以前大家可望不可及的事了,当然这都归功于XML的出现。

从整体上讲,XML定义了应用间传递数据的结构,而且这种结构的描述不是基于二进制的、只能由程序去判读的代码,而是一种简单的、能够用任何编辑器读取的文本。利用这种机制,程序员可以制定底层数据交换的规范,然后在此基础上开发整个系统的各个模块,而各模块之间传输的数据将是规范的符合既定规则的数据。另外,XML还允许为特定的应用制定特殊的数据格式,并且非常适合于在服务器与服务器之间传送结构化数据。总之,在不久的将来XML必将成为互联网中一颗璀璨的明星。 

标签:xml,数据库
0
投稿

猜你喜欢

  • Mysql 数据库双机热备的配置方法

    2010-06-09 19:13:00
  • 如何建设一个多语言版的ASP网站?

    2009-11-26 20:36:00
  • 15个梦幻的登录页面设计展示

    2009-07-19 14:17:00
  • CSS自适应宽度圆角按钮

    2007-11-20 11:38:00
  • 关于SQL中CTE(公用表表达式)(Common Table Expression)的总结

    2012-08-21 10:22:21
  • js游戏 俄罗斯方块 源代码

    2008-01-24 13:14:00
  • 基于Oracle的高性能动态SQL程序开发

    2010-07-20 13:01:00
  • 在Internet Explorer中正确使用MSXML

    2009-02-22 18:41:00
  • ajax+asp无限级分类树型结构

    2011-04-02 11:05:00
  • Web 设计:实现干净代码的12条定律

    2008-12-04 13:27:00
  • 大家都对vertical-align的各说各话

    2008-06-19 12:11:00
  • RHEL下架设MYSQL集群

    2008-12-24 16:05:00
  • 科学与艺术兼顾的有效网页视觉设计

    2007-09-18 18:03:00
  • 网页布局的位置重心与位置间的对比关系

    2007-10-15 19:20:00
  • js增强的自定义事件模型

    2008-02-18 12:37:00
  • 数字人组件反写[asp组件开发实例5]

    2009-06-09 13:23:00
  • SQL 语句中的通配符

    2007-10-11 18:03:00
  • link 和 style 元素在 HTML 文档中的位置

    2008-06-02 13:56:00
  • MySQL安全大讲堂:MySQL数据库安全配置

    2009-10-18 11:24:00
  • Dreamweaver层使用八定律

    2008-05-16 11:41:00
  • asp之家 网络编程 m.aspxhome.com