动态产生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必将成为互联网中一颗璀璨的明星。


猜你喜欢
- 提起python做网络爬虫就不得不说到强大的组件urllib2。在python中正是使用urllib2这个组件来抓取网页的。urllib2是
- Oracle TRIM函数是很常见的函数,下面对Oracle TRIM函数的语法作了详尽的阐述说明,希望可以让您对Oracle TRIM函数
- 前言大家好,我叫善念。这是我的第二篇博客,也是第一篇技术博客,希望大家多多支持,让我更加有动力去更新一些python爬虫类的案例教程。开始确
- 1、检查本机python 版本:2、安装Qt5 执行如下指令:pip install PyQt5 -i https://pypi.douba
- 在使用javascript编程时浏览器中经常会遇到的两个麻烦,下面提供两个函数解决方式做参考,并提供一个demo让你更直观地了解我所说的这两
- 本文实例为大家分享了python实现用户名密码校验的具体代码,供大家参考,具体内容如下需要实现功能输入用户名密码 ;认证成功后显示 欢迎信息
- 一、前言本来写了脚本用于暴力破解密码,可是1秒钟尝试一个密码2220000个密码我的天,想用多线程可是只会一个for全开,难道开222000
- set函数也是python内置函数的其中一个,属于比较基础的函数。其具体介绍和使用方法,下面进行介绍。set() 函数创建一个无序不重复元素
- 出自: 编程中国 http://www.bc-cn.net作者: 天涯听雨 &nbs
- Python Socket模块中包含一些有用IP转换函数,说明如下:socket.ntohl(x) // 类似于
- 这篇文章主要介绍了Python socket模块方法实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 网络编程有三个要素,分别是IP地址、端口号和通信协议,那本文主要讲述的是TCP与UDP这两种通信协议,以及编程的实现。首先,我们需要了解一下
- Python是一种高级编程语言,它在众多编程语言中,拥有极高的人气和使用率。Python中的多进程和进程池是其强大的功能之一,可以让我们更加
- 如何显示SQL数据库所有表的名称?<%strSQLDSN = "xxxx"strSQLUser
- 1、简介这篇博客将会非常基础,如果有MySQL经验的可以跳过,写这篇博客的原因是给初学者看的。下面将会讲解如何使用select查看指定表的单
- 最简单的例子:a = [1,1,1,1,2,2,2,3,3,1,1,1,3]# 问:计算a中最多有几个连续的1很明显,答案是4如果用代码实现
- 理解 pandas 的函数,要对函数式编程有一定的概念和理解。函数式编程,包括函数式编程思维,当然是一个很复杂的话题,但对今天介绍的 app
- OpenCV:图片缩放和图像金字塔对图像进行缩放的最简单方法当然是调用resize函数啦!resize函数可以将源图像精确地转化为指定尺寸的
- 本文实例讲述了JavaScript实现点击按钮切换网页背景色的方法。分享给大家供大家参考,具体如下:这里演示JavaScript用按钮随意变
- finetune分为全局finetune和局部finetune。首先介绍一下局部finetune步骤:1.固定参数 for na