📄 0902-0400.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0071)http://162.105.170.55/ASPs/GetLearningArticleTemp.asp?section=0902-0400 -->
<HTML><HEAD><TITLE>XML中国论坛 - 初学进阶 - 9.2.4 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=33 rowSpan=2></TD>
<TD vAlign=center width="888" ><IMG height=33
src="image/title_learner.gif" width=226></TD>
<TD width=33 rowSpan=2></TD>
</TR>
<TR vAlign=top>
<TD width="888"><!-- 正文内容 -->
<DIV class=pt10><B>9.2.4 XML在数据库中的应用模式</B></DIV>
<DIV></DIV><BR>
<DIV class=pt9>
<P>通常,XML在数据库中的应用模型需要借助三层架构来实现。在这种模式下,一般会有一个代理程序运行于中间层,通过它来访问数据库管理系统中的数据和输出XML文档。想必大家都对建筑工地上运载材料的吊车不太陌生吧?通过吊车,工人们就可以将地面的建筑材料运上高高的建筑操作平台;同时,也可以将平台上的废料送至地面,大大提高了劳动效率。代理程序也起着同样的作用,实际上,它是一种在客户端桌面应用层与底层数据层之间传递数据的工具。利用CSS或XSL技术,XML可以实现基于Web浏览器的多样式可视化显示。另外,这种代理程序还可以进行双向的基于事件的数据更新,也就是说,客户端的数据变化(如数据的插入、删除、修改等)可以通过代理程序反映到底层数据库,而数据库的更新也能够通知到客户端。表面上看,这种机制同传统的三层架构没有什么区别,但实际上是不同的,因为此时在传输过程中的数据都是已经XML化了的。
</P>
<P>微软在其Windows分布式Internet应用(即Windows
DNA)架构中集成了XML技术。通过中间层的代理程序,可获取的数据来源可以不必局限于某台固定的数据库服务器,而可以是分布于企业内,甚至于遍及全球各地的数据库服务器。另外,借助于XML
Schema,开发者就能更为精确地描述和交换数据,因而大大地提高这种应用的效率。</P>
<P>XML提供了一种连接关系数据库和面向对象数据库以及其他数据库管理系统之间的纽带,如下图所示。XML文档本身是一种由若干节点组成的结构,这种特点使得数据更适宜于用面向对象格式来存储,同时也有利于面向对象语言(C++、Java等)调用XML编程接口访问XML节点。关系数据库和面向对象数据库首先需要将数据从数据库中提取出来,经过转换为或直接以XML数据形式发布到网上(局域网或Internet网),然后相互交换数据,经应用层系统处理后再转存入库。</P>
<P align=center><IMG height=221
alt="TU000000-0902-0300-01.gif (2669 bytes)"
src="image/TU000000-0902-0300-01.gif" width=380></P>
<P>开发一个访问数据库的XML应用系统需要同时借助XML编程接口和数据库编程接口,前者用于对XML文档的解析、定位和查询,所需技术包括DOM和SAX;后者则是用于访问数据库,如数据库中数据的更新和检索等等,需要利用的技术有ODBC、JDBC、ADO等。</P>
<P>另外,XML文档的模式(如DTD和Schema)以及数据库的模式对于开发此类应用也是必不可少的。由于它们均可自定义数据类型,因此可以通过信息的封装来简化程序的设计。对于数据库来讲,它可以利用CREATE
TYPE命令来定义对象类型。下面的示例展示了如何在数据库中定义对象类型,本例以Oracle 8i为数据库平台。</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%">CREATE TYPE CLIENTLIST AS OBJECT<BR>(<BR>
Name VARCHAR2(10),<BR> ID int,<BR> Company
VARCHAR2(20),<BR> Email
VARCHAR2(20)<BR>)</TD></TR></TBODY></TABLE></CENTER></DIV>
<P>下面再给出XML Schema的相应描述。</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><?xml version="1.0" encoding="GB2312" ?>
<P><Schema xmlns="urn:schemas-microsoft-com:xml-data"
<BR>
xmlns:dt="urn:schemas-microsoft-com:datatypes"><BR>
<ElementType name= "姓名"/><BR> <ElementType name=
"ID"/><BR> <ElementType name= "公司"/> <BR>
<ElementType name= "EMAIL"/><BR> <ElementType name=
"联系人" content="eltOnly"><BR> <element type=
"姓名" /><BR> <element type= "ID"
/><BR> <element type= "公司"
/><BR> <element type= "EMAIL"
/><BR> </ElementType><BR> <ElementType name=
"联系人列表" content="eltOnly" order="many"> <BR>
<element type= "联系人" /><BR>
</ElementType><BR></Schema></P></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>由以上例子可以看出,“联系人”对象中包含了“姓名”、“ID”、“公司”、“EMAIL”四个元素。<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 + -