📄 0901-0100.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0071)http://162.105.170.55/ASPs/GetLearningArticleTemp.asp?section=0901-0100 -->
<HTML><HEAD><TITLE>XML中国论坛 - 初学进阶 - 9.1.1 XML数据交换机制</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TABLE {
FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"
}
.pt9 {
FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"
}
.pt10 {
FONT-WEIGHT: 700; FONT-SIZE: 10pt; LINE-HEIGHT: 18pt; FONT-FAMILY: "宋体"
}
.TempOutline {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; COLOR: #666666; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.TempOutline1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; COLOR: #666666; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.Outline11 {
FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage0 {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage11 {
FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
.passage111 {
FONT-SIZE: 9pt; MARGIN-LEFT: 51pt; TEXT-INDENT: -64pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
</STYLE>
<META content="Microsoft FrontPage 5.0" name=GENERATOR></HEAD>
<BODY vLink=#000000 aLink=#000000 link=#000000 leftMargin=0 topMargin=0
onload=""><!-- 以下为主体内容 -->
<div align="center">
<center>
<TABLE border=0 width="100%" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
<TBODY>
<TR vAlign=top>
<TD width=47 rowSpan=2></TD>
<TD vAlign=center width="836" >
<p align="center"><IMG height=33
src="image/title_learner.gif" width=226></TD>
<TD width=34 rowSpan=2></TD>
</TR>
<TR vAlign=top>
<TD width="836" ><!-- 正文内容 -->
<DIV class=pt10><B>9.1.1 XML数据交换机制</B></DIV>
<DIV></DIV><BR>
<DIV class=pt9>
<P>XML可以分为三层结构,数据表现层,数据组织层和数据交换层。在我们对表现层和数据组织层有了一个比较全面比较深入的了解后,最后再来看看XML的最底层——数据交换层。</P>
<P>我们知道,从整体上讲,XML定义的实际上是应用间传递数据的结构,而且这种结构的描述不是基于二进制的、只能由程序去判读的代码,而是一种简单的、能够用通用编辑器读取的文本。利用这种机制,程序员可以制订底层数据交换的规范,然后在此基础上开发整个系统的各个模块,而各模块之间传输的数据将是符合既定规则的数据。另外,XML还允许为特定的应用制定特殊的数据格式,并且非常适合于在服务器与服务器之间传送结构化数据。</P>
<P>从应用的角度来看,XML信息交换大致可分为下面几种类型:数据发布、数据集成和交易自动化。
<OL>
<LI><STRONG>数据发布</STRONG> </LI></OL>
<P>当今时代可以说是信息爆炸的时代,而互联网的出现又起到了推波助澜的作用,人们对信息的获取不再局限于读书看报,“到网上去冲浪”业已成为网迷们的口头语,并逐渐为越来越多的人所接受。在这种新生的环境下,业内人士不失时机地提出了“同一数据,多次出版”的解决方案。这种方式使我们只须制作和管理同一信息资源,就能够达到多种媒介出版和多种方式发布的目的。</P>
<P>先来看一下传统的信息发布方式--基于纸介质和CD-ROM的信息发布。虽然CD-ROM与纸张属于不同的介质,但是由于他们采用的数据格式基本一致,因此将他们归为一类。</P>
<P>早期制订的媒介无关的描述结构化信息的国际标准当属SGML-ISO 8879
1996,但是XML的出现,使得跨媒体数据发布技术又向前发展了一步。2000年5月18日,一个由数字印刷领域的知名厂家组成的所谓“按需印刷”组织(PODi)发布了“个性化印刷置标语言”(Personalized
Print Markup Language,
PPML)规范。这是一种基于XML的技术规范,主要用于带有可再利用内容文档的快速印刷。可以说,有了XML,跨媒体、多介质的数据发布显得更是顺水推舟。</P>
<P>最值得一提的是基于Web的网上发布。HTML作为Internet上Web网页描述语言已经为大家所熟知,而同HTML一脉相传的XML当然也可以在网上发布,当然需要配合样式信息(如CSS或XSL),因为正如你所知,XML只是定义文档内容而不涉及具体表现。另外,一种更为直接的Web发布语言也已诞生,那就是XHTML。XHTML是一种基于XML的超文本置标语言,也就是说,将以前用SGML定义的HTML改为用XML重新定义。现在,XHTML已经作为W3C的建议标准公布于众,相信在不久的将来会大有作为的。
<OL start=2>
<LI><STRONG>数据集成</STRONG> </LI></OL>
<P>如果说数据发布涉及到的是服务器-浏览器形式的数据交换,那么,数据集成则是一种服务器-服务器之间的数据交换。</P>
<P>现实世界中,一个企业需要涉及各种应用,小到上下班打卡系统,大到人事管理系统、财务核算系统、库存管理系统等等。一般情况下,各个系统可能是由不同的软件公司开发的,软件可能采用不同的技术、运行于不同的平台。但是企业的运作是一个整体,需要各个系统相互配合,于是应用系统间的数据交换接口就成为困扰信息主管的一大难题。于是,可能会出现这样的尴尬局面:月初,上下班打卡系统管理员将上月的员工考勤数据打包传送给人事部门(或用软盘或由网络发送),财务部门也将员工所在部门的销售业绩统计打包传送给人事部门,而后,人事干事运行一个批处理程序合并考勤数据和业绩统计,最后计算出员工工资。类似的情况几乎可以说比比皆是,但这是现实。企业缺乏一个顺畅的业务管理平台,不能将各部门的信息有机的集成在一起,势必造成管理上的混乱。</P>
<P>XML是解决这一问题的强大法宝。让我们再来分析一下这个假想的示例,其实,造成这种混乱局面的原因说到底,就是各个系统没有统一的数据结构约定。其后果不但是效率低下,而且信息冗余、重复开发也会造成资源的巨大浪费。在这种情况下,XML将起到粘合剂的作用,通过它,使得各业务模块有机结合,数据交换畅通无阻,从整体达到理顺业务操作的目的。</P>
<P>同所有软件开发规范一样,实现数据集成也必须分步骤、有条理地进行:
<UL>
<LI>首先,要对整个业务进行调整,摈弃不合理部分。也许你会说:是不是跑题了,这同XML有什么关系?表面上看,似乎风马牛不相及,其实不然,基于XML的数据集成不仅仅是要进行系统开发,对旧有系统的合理改造也是很重要的。
<LI>然后,对业务模式归纳总结并从中抽象出数据交换模型,当然是基于XML的数据交换模型,也就是说制定数据交换的DTD或Schema。这是最基本的,但同时也是最为困难的一步。XML消息流要符合企业的信息流。不要将XML看作是用来代替对象或者开发软件的新方法,它应该是一种表达层次结构信息并且在不同的应用系统间传输这种信息的有效途径。在制定XML数据交换模型中,一个易犯的错误是直接照搬原来的数据格式而仅仅将其逐字逐句地"翻译"成XML,毕竟这是一个改造旧系统的"工程",去粗存精方是上策。
<LI>最后一步,结合制定好的XML数据交换模型,运用XML
DOM和SAX等技术编写应用程序,也可直接在原系统上进行改造。也许这是一件比较棘手的工作,毕竟任何新生事物和新技术的出现都会打破一些人的陈旧观念,但是好在学习XML及其应用开发技术并不是一件非常难的事情。
</LI></UL>
<P>前面我们讲的是关于企业内部的XML数据集成,其实不同企业间的数据交换也是XML的用武之地。电子商务交易平台之间的XML
B2B信息交换就是很好的例证。同企业内部的数据集成不同,企业间的XML数据集成需要由一个开放的、需要交易各方共同遵守的“法规”——基于XML的数据交换标准。目前全球电子商务的发展非常迅速,各种行业甚至跨行业的XML电子商务规范与框架层出不穷,其中比较有代表性的是:Ariba的cXML、IBM的tpaML
、CommerceOne的xCBL 2.0
、Microsoft的BizTalk框架、CommerceNet的eCo计划、RosettaNet的eConcert计划与PIP规范集以及联合国UN/CEFACT小组和OASIS发起的ebXML计划。XML技术的融入,使得企业间的交易不再局限于专网和特定的应用,而是可以在Internet上的不同系统间交换信息,不仅大大降低了成本,而且提高了数据的可持续性,从而保护了既有投资。
<OL>
<LI type=disc value=3><STRONG>交易自动化</STRONG> </LI></OL>
<P>XML也有助于提高应用的自动化程度。遵循共同的标准,使得应用程序开发商开发出具有一定自动处理能力的代理程序,从而提高工作效率。一个典型的应用是,开发这样一个智能代理程序:首先,该程序向某电子商务交易系统发出一个供货商资料查询请求,在得到应答后,自动连接答复中提供的所有供货商站点;然后,搜索预定商品的信息,并对获取到的不同商家针对该商品的价格、质量、服务等信息按一定的商业规则进行比较;最后,得出理想的结果,并自动向该站点下订单。下图即示出了这种自动交易的过程:</P>
<P align=center><IMG height=207
alt="TU000000-0901-0100-01.gif (10753 bytes)"
src="image/TU000000-0901-0100-01.gif" width=300></P>
<P><BR></P></DIV>
<P></P>
<P></P></TD></TR></TBODY></TABLE>
</center>
</div>
<P></P>
<P>
<P></P></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -