?? 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的技術規范,主要用于帶有可再利用內容文檔的快速印刷??梢哉f,有了XML,跨媒體、多介質的數據發布顯得更是順水推舟。</P>
<P>最值得一提的是基于Web的網上發布。HTML作為Internet上Web網頁描述語言已經為大家所熟知,而同HTML一脈相傳的XML當然也可以在網上發布,當然需要配合樣式信息(如CSS或XSL),因為正如你所知,XML只是定義文檔內容而不涉及具體表現。另外,一種更為直接的Web發布語言也已誕生,那就是XHTML。XHTML是一種基于XML的超文本置標語言,也就是說,將以前用SGML定義的HTML改為用XML重新定義?,F在,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 + -