?? 0801-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=0801-0100 -->
<HTML><HEAD><TITLE>XML中國論壇 - 初學進階 - 8.1.1 接口的由來</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 width="100%" border=0 style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
<TBODY>
<TR vAlign=top>
<TD width=42 rowSpan=2></TD>
<TD vAlign=center width="499" >
<p align="center"><IMG height=33
src="image/title_learner.gif" width=226></TD>
<TD width=45 rowSpan=2></TD>
</TR>
<TR vAlign=top>
<TD width="499"><!-- 正文內容 -->
<DIV class=pt10><B>8.1.1 接口的由來</B></DIV>
<DIV></DIV><BR>
<DIV class=pt9>
<P>到目前為止,我們都是在孤立地講XML、討論和XML相關的協議和工具,教會大家如何直接寫一個XML文件,如何利用瀏覽器分析它瀏覽它。但實際上,同HTML一樣,XML有時是動態生成的,需要我們編寫一段代碼一個腳本,作為一個“局外人”間接地去創建、訪問和操作一個XML文件。還有些時候,我們所開發的應用程序需要能夠讀懂別人寫的XML文件,從中提取我們所需要的信息。在以上這些情況下,我們都需要一個XML接口,這個接口是善意友好的,我們以它為媒,將我們的應用程序與XML文檔結合在一起。在這一章里,我們就來介紹由W3C和XML_DEV郵件列表成員分別提出的兩個標準應用程序接口:DOM和SAX。</P>
<P>實際上,XML文檔就是一個文本文件,因此在我們需要訪問文檔中的內容時,必須首先書寫一個能夠識別XML文檔信息的文本文件閱讀器,也就是我們通常所說的XML語法分析器,由它來幫助我們解釋XML文檔并提取其中的內容。這就要求每個應用XML的人都要自己去處理XML的語法細節,顯然是一項非常耗時的工作。更糟糕的是,如果需要在不同的應用程序或開發環境中訪問XML文檔中的數據,這樣的分析器代碼就要被重寫多次。</P>
<P>或許您會覺得這難不倒您:把XML分析器做成一個DLL不就可以解決代碼重寫的問題了嗎?回答當然是肯定的。不過,每一個XML分析器的DLL必然有自己的接口,我們正是通過這個接口來訪問并處理XML文檔中的數據的。但如果各種分析器的接口都不相同,那么我們的開發就必須是針對某一個XML分析器的,要是想換用另外一個分析器,那么非常抱歉,程序不得不重新改寫。因此,有了DLL有了接口還遠遠不夠,我們還需要一個善意友好的接口,也就是一個統一的接口。要真正實現代碼的重用,就必須解決DLL的接口標準問題。</P>
<P>我們知道,數據庫有標準的ODBC/JDBC這樣的接口規范。在它的幫助下,我們編寫數據庫應用程序的時候只要針對于接口即可,可以不管后臺的數據庫系統究竟是ORACLE還是SYBASE,是DB2還是SQL
Server,這給應用程序的開發帶來了很大的便利。同樣的道理,在我們做XML的應用開發時,一個統一的XML數據接口也是必需的。</P>
<P>W3C意識到了上述問題的存在,于是制定了一套書寫XML分析器的標準接口規范--DOM。除此之外,XML_DEV郵件列表中的成員根據應用的需求也自發地定義了一套對XML文檔進行操作的接口規范--SAX。這兩種接口規范各有側重,互有長短,應用都比較廣泛。</P>
<P>下面,我們給出DOM和SAX在應用程序開發過程中所處地位的示意圖。從圖中可以看出,應用程序不是直接對XML文檔進行操作的,而是首先由XML分析器對XML文檔進行分析,然后,應用程序通過XML分析器所提供的DOM接口或SAX接口對分析結果進行操作,從而間接地實現了對XML文檔的訪問。</P>
<P align=center><IMG height=106
alt="TU000000-0801-0100-01.gif (6677 bytes)"
src="image/TU000000-0801-0100-01.gif" width=300><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 + -