📄 用xml优化二次检索 - fanqiang_com.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0064)http://fanqiang.chinaunix.net/program/html/2002-01-29/2291.shtml -->
<HTML><HEAD><TITLE>用XML优化二次检索 - fanqiang.com</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>BODY {
FONT: 12pt 宋体
}
TH {
FONT: 12pt 宋体
}
INPUT {
FONT: 12pt 宋体
}
SELECT {
FONT: 12pt 宋体
}
TEXTAREA {
FONT: 12pt 宋体
}
SELECT {
FONT: 12pt 宋体
}
checkbox {
FONT: 12pt 宋体
}
A:link {
COLOR: #e6a306; TEXT-DECORATION: underline
}
A:visited {
COLOR: #e6a306; TEXT-DECORATION: underline
}
A:hover {
COLOR: #ffff00; TEXT-DECORATION: underline
}
BODY {
FONT-SIZE: 12pt; FONT-FAMILY: "宋体", "serif"
}
TD {
FONT-SIZE: 12pt; FONT-FAMILY: "宋体", "serif"
}
P {
FONT-SIZE: 9pt; LINE-HEIGHT: 150%
}
</STYLE>
<META content="MSHTML 6.00.2800.1505" name=GENERATOR></HEAD>
<BODY text=#ffffff bgColor=#000000 leftMargin=0
background="用XML优化二次检索 - fanqiang_com.files/bline.gif" topMargin=5
onload=setTailPosition() marginwidth="0" marginheight="5">
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 width=750 border=0>
<TBODY>
<TR>
<TD height=45>
<P align=center><IMG alt="[ 永远的UNIX::UNIX技术资料的宝库 ]"
src="用XML优化二次检索 - fanqiang_com.files/title.gif"> </P></TD></TR>
<TR>
<TR>
<TD vAlign=bottom align=left height=40><SMALL><A
href="http://fanqiang.chinaunix.net/">首页</A> > 编程技术 > <A
href="http://fanqiang.chinaunix.net/program/html/index.shtml">HTML/JS/XML</A>
> 正文</SMALL></TD></TR>
<TR>
<TD width="100%" bgColor=#d09f0d colSpan=5 height=2><IMG height=1
src="用XML优化二次检索 - fanqiang_com.files/c.gif" width=1></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=750 border=0>
<TBODY>
<TR>
<TD vAlign=top align=middle><BR>
<TABLE cellSpacing=0 cellPadding=0 width="90%" align=center border=0>
<TBODY>
<TR>
<TH class=f24>
<H1>用XML优化二次检索</H1></TH></TR>
<TR>
<TD align=middle height=20><FONT
color=#999999><SMALL>本文出自:http://www.computerworld.com.cn 作者:华中科技大学
李锋 魏莹 (2002-01-29 20:53:13)</SMALL></FONT></TD></TR>
<TR>
<TD><BR>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-0052768304011480";
google_alternate_color = "000000";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_channel ="5959447789";
google_color_border = "000000";
google_color_bg = "666666";
google_color_link = "FFFFFF";
google_color_url = "FF9900";
google_color_text = "CCCCCC";
//--></SCRIPT>
<SCRIPT src="用XML优化二次检索 - fanqiang_com.files/show_ads.js"
type=text/javascript>
</SCRIPT>
</TD></TR>
<TR>
<TD height=15></TD></TR>
<TR>
<TD class=l17><FONT class=f14 id=zoom><FONT color=#cccccc><!-- 正文begin --><!--HTML_BEGIN-->
<TABLE width=728 align=center>
<TBODY>
<TR>
<TD vAlign=top width=600>
<TABLE width="100%">
<TBODY>
<TR>
<TD
class=a14><B><I>在搜索引擎的设计以及类似的软件功能设计中,一个必不可少的功能就是:对已有搜索结果的二次检索。如果检索的数据集是静态数据(例如存放在数据库中),通常的做法是在已有的检索条件的基础上,动态加入新的约束条件。但是重新构造数据检索的约束条件,往往需要用户同服务器再次交互,重新下载所需数据集合并输出。如果能在客户端对已经下载的数据集合进行二次检索,将极大地减轻Web服务器以及数据库服务器的负担。</I></B></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD
class=a14><I><B>XML能够很大程度地满足以上需求。它将数据内容本身与数据显示格式独立开来,分别处理。这样,如果需要改变文档的显示方式,只要修改样式文件(XSL)就可以了。XML的自我描述特性能够很好地表现许多复杂的数据关系,使得基于XML的应用程序可以在XML文件中准确高效地搜索相关的数据内容,忽略其他不相关的部分。同时,整个数据操作都是在客户端完成,大大减轻了服务器的负担。</B></I></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>
<DIV align=center><FONT
size=4><B>XML编程接口DOM简介</B></FONT></DIV></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>DOM(Document Object
Model,文档对象模型)是一种与平台和语言无关的编程接口,它允许程序和脚本动态访问和修改文档的内容结构和类型。它定义了一系列的对象和方法对DOM树的节点进行各种随机操作。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>●
Document对象:是DOM树的最顶层节点,是对整个文档进行操作的入口。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>●
Element和Attr对象:这些节点对象都是文档某部分的映射,节点的层次恰好反映了文档的结构。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>●
Text对象:作为Element和Attr对象的子节点,Text对象表达了元素或属性的文本内容。Text节点不再包含任何子节点。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>●
集合索引:DOM提供了多种集合索引方式,可以对节点按指定方式进行遍历。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD
class=a14>DOM采用以上介绍的一系列接口来描述XML文档的内容和结构,即利用对象将文档模型化。这种对象模型实现的基本功能包括:</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>● 描述文档表示和操作的接口;</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>● 接口的行为和属性;</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>● 接口之间的关系以及互操作。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD
class=a14>DOM对结构化的XML文档进行解析,文档中的元素、实体、属性等所有个体都可以用对象模型表示。整个文档的逻辑结构类似一棵树,生成的对象模型就是树的节点,每个对象同时包含了方法和属性。DOM提供了许多查找节点的方法。其中用于搜索的方法有:</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>● 根据标签名称搜索元素:
利用Document对象中的getElementsByTagName方法在全文范围内查找元素;</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>●
使用XSL模式搜索节点:所有类型的节点都带有selectNodes方法,调用这个方法可以利用XSL的模式匹配策略查找节点;</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>● 使用集合索引搜索节点:
索引参数都是从0开始计数的,例如子节点ChildNodes对象集。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD
class=a14>利用DOM,开发人员可以动态地创建XML、遍历文档、增加(删除/修改)文档内容。DOM提供的API与编程语言无关,所以对一些DOM标准中没有明确定义的接口,不同解析器的实现方法有可能有所差别。本文的示例采用MSXML
DOM方案,并采用IE 5.0作为输出显示的浏览器。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>
<DIV align=center><FONT
size=4><B>软件实现</B></FONT></DIV></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD
class=a14>以下用一个简单的学生成绩查询系统为例具体说明如何实现。可以先按照学生所在的班级将学生成绩查询出来,然后可以选出平均分高于设定分数(用一个文本框接收设定分数)的学生列表。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>在SQL
Server中包含一个学生成绩表,关键字段有:学生姓名(Name)、班级(Class)、单科成绩(YuWen、ShuXue、JiSuanJi、YingYu等)、平均成绩(AverageScore)。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD
class=a14>首先,编辑初始页面以提供按班级查询学生成绩的功能。</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><form method=post action=MyRearch.
asp></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>输入班号: <input type=text
name=ClassName></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><input type=submit
value=“提交”><input type=reset
value=“重填”></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14></form></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD
class=a14>MyRearch.asp文件中,提供按平均成绩查询的二次查询功能。关键代码如下:</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><%@ Language=VBScript
%></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD
class=a14>//建立数据库连接,并根据用户需求,从数据库中检索出所有符合要求的数据集</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><% Set
Conn=Server.CreateObject(“ADODB.connection”)
%></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><% Set
rs=server.CreateObject(“ADODB.recordset”)
%></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><% Conn. open
Application(“SQLserver</TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14>Conn”) %></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><% sqlText=“select * from ScoreTable
where Class=‘” %></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><% sqlText=sqlText &
request.Form(“ClassName”) & “’”
%></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><% set rs=conn.Execute(sqlText)
%></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD class=a14><% rs.MoveFirst
%></TD></TR></TBODY></TABLE>
<TABLE width="100%">
<TBODY>
<TR>
<TD
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -