摘要:随着信息化社会的发展和不同系统间数据交换的要求,XML将成为不同系统间数据交换的标准和传输格式。本文结合实例介绍了如何在Delphi中应用XML进行编程的技术。
关键字:可扩展标记语言,Delphi, Web Service, InternetExpress.
1. XML及其背景
XML即Extensible Markup Language(可扩展标记语言)的缩写[1]。XML是Web上表示结构化信息的一种标准文本格。XML同HTML一样,都来自SGML(标准通用标记语言)。XML与SGML相比,简单易懂,是一门既无标签集也无语法的新一代标记语言。XML具有以下的先进特性:
1.1 简单性
XML为程序员和文档作者提供了一个友好的环境。XML的严格定义和规则集使得人类和机器都能很容易地阅读文档。XML文档语法包含一个非常小的规则集,使开发者能立刻开始工作。
1.2 可扩展性
XML在两个意义上是可扩展的。首先,它允许开发者创建他们自己的DTD,有效地创建可被用于多种应用的"可扩展的"标志集;其次,使用几个附加的标准,可以对XML进行扩展,这些附加标准可以向核心的XML功能集增加样式、链接和参照能力。
1.3 开放性
XML标准在Internet上是完全开放的。XML文档自身也较为开放,任何人都可以对一个结构良好的XML文档进行语法分析,如果提供了DTD,还可以校验这个文档。开放性是它最大的优点之一。
此外,XML还有互操作性和自描述性。XML可以在多种平台上使用,可以用多种工具进行解释;XML支持用于字符编码的许多主要标准。自描述性表现在 XML文档通常包含一个文档类型声明,不仅人能读懂XML文档,计算机也能处理。XML文档被看作是文档的数据库化和数据的文档化。
2. DELPHI及其对XML的支持
Delphi提供可视化的开发环境;最新版本的Delphi更深入、更全面地强化了"支持COM,DCOM,COM+,多级分层体系结构的 DataSnap,Soap/Web Service,网络编程"等诸多功能,还对XML/XSL技术及开发基于NET框架应用程序提供了强大支持。
XML已经成为正式的规范,开发人员能够用XML的格式标记和交换数据。XML在三层架构上为数据处理提供了很好的方法。使用可升级的三层模型, XML可以从现有的数据中产生出来,使用XML结构化的数据可以从商业规范和表现形式中分离出来。 XML可看作一种半结构化的数据模型,可以很容易地将XML的文档描述与关系数据库中的属性一一对应起来,实施精确地查询与模型抽取。
Delphi 7 Studio更是新增了十几项XML功能让用户更灵活,更方便的编写基于XML的应用程序。其对XML的支持主要体现在以下几个方面:
2.1在数据库应用程序中使用XML技术
XML文档提供了Web应用程序和电子商务通信中标准的数据传输格式。Delphi支持使用XML文档来创建数据库应用程序。使用Delphi提供的组件可以在数据包(Data)和XML文档之间轻易地转换,使得使用XML文档就象使用数据库一样方便。在这个过程中要用到XML文档、XML影射工具(XML Mapper)及其转换文件。三者之间的关系如图1所示.
图1. XML文档、XML影射工具及其转换文件之间的关系
2.2 InternetExpress技术
InternetExpress是Delphi在Web上实现多层应用的方法,它允许程序员真正地使用业界标准来开发分布式Web或者电子商务系统。它提供了程序员以可视化方式开发以XML封装数据的Web应用程序,即可见即所得的方式轻易地设计浏览器中显示的数据及图形用户界面。其工作原理如图2:
图2. 使用Internet Express 技术建立Web应用系统的结构图
2.3 WebBroker技术。
Delphi提供了很多Internet组件,让开发者开发以XML/HTML为主的Web应用程序,这些技术的核心是WebBroker技术。WebBroker的基本应用结构如图3所示:
图3. WebBroker应用结构
2.4 WebSnap技术
Delphi为了让开发者更方便的开发Internet/Intranet应用系统的新架构和组件,新增加了一个功能WebSnap。WebSnap在WebBroker的基础上,增加了新的组件、应用向导和视图,使得开发Web应用更容易,效率更高。
2.5 轻便的 XML 个人数据库引擎 MyBase
Delphi6 内建 MyBase 个人用途XML数据库引擎 ,提供在内存中高效能数据表格 、具弹性的XML数据交换格式 ,以及简易的安装管理。
另外,BizSnap Web Services RAD开发平台通过轻松创建XML/ SOAP Web Services和连接,简化了B2B的集成过程。BizSnap 相关组件与工具可以轻松转换现有企业信息成为 XML 文件 ,让您的企业在 B2B 的潮流中完全不受限制与拘束 。BizSnap 让 Delphi 能够藉由标准的SOAP/XML Web Service 与 Microsoft .NET 、Microsoft BizTalk 以及 Sun Microsystems ONE 等应用服务相整合 。
3. 应用实例
下面结合一个具体的实例说明如何在Delphi中编写XML应用程序。该实例是在WebBroker应用程序中运用XML/XSLT进行编程,使用WebBroker Extensions组件。
3.1 首先安装WebBroker Extensions组件。可以使用Delphi自带的安装程序进行安装,或者打开Delphi在Component->Install Component进行安装。安装后,选择New->Others,在弹出的对话框中将出现XML一项,单击XML标签,在下面的对话框中有"XSLT WebServer Application"项。
3.2 然后选择"XSLT WebServer Application",单击"OK",会出现一个和创建WebBroker应用程序相似的界面。接受默认设置,工程向导将创建一个XSLWebModule模块。
3.3下面添加Actions属性。选定Webmodule,然后为其增加一个XSLActions,可使用Property Editor或选择树结构中的XSLActions结点,然后按右键选择Add菜单项。
3.4 设置XSLActions Item属性,将XML Template 及XSL StyleSheet的属性分别设置为:cars.xml 和cars.xslt。其中cars.xml(表1.)、 cars.xslt(表2.)的内容如下(为了简洁只定义基本框架)。根据表2(cars.xslt)的定义可以看到输出的cars.html格式为表格。
3.5 保存项目工程为prjDemo,编译后,然后运行在Web服务器上如:
http://MyWebserver.com.输入的网址为:http://localhost/ISAPI/prjDemo.dll/.图4. 程序运行的基本逻辑流程
3.6当应用程序响应一个Request,Webmodule将装载XML Template文件cars.xml。随后响应OnAction事件,webmodule将把指定的XSLT StyleSheet文件装载,并和XML Template文件一起传送给Transform Processor。Processor把处理的结果作为响应返回到客户端(Client)。基本流程如图4所示:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="D:\TEMP\cars.xslt"?>
<cars>
<type>Cars</type>
<car>
<name>Commodore</name>
<price>26,000</price>
</car>
……
</cars>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="
http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE> <xsl:value-of select="cars/type"/> </TITLE>
</HEAD>
<BODY>
<TABLE border="1">
<TR>
<TD>Name</TD>
<TD>Price</TD>
</TR>
<xsl:for-each select="cars/car">
<TR>
<TD>
<xsl:value-of select="name"/>
</TD>
<TD>
<xsl:value-of select="price"/>
</TD>
</TR>
</xsl:for-each>
</TABLE>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
4.结束语
本文对XML及其如何在Delphi中实现 XML编程技术进行介绍,并在具体的实例中结合Delphi中的组件技术,使用第三方控件实现XML编程。