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