?? 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 + -