﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-大道至简-文章分类-XML</title><link>http://www.blogjava.net/hellotony/category/10563.html</link><description>道生一，一生二，二生三，三生万物。万物负阴而抱阳，冲气以为和。</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 06:36:19 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 06:36:19 GMT</pubDate><ttl>60</ttl><item><title>XML数据岛技术的总结(转)</title><link>http://www.blogjava.net/hellotony/articles/45282.html</link><dc:creator>Tony</dc:creator><author>Tony</author><pubDate>Tue, 09 May 2006 13:11:00 GMT</pubDate><guid>http://www.blogjava.net/hellotony/articles/45282.html</guid><wfw:comment>http://www.blogjava.net/hellotony/comments/45282.html</wfw:comment><comments>http://www.blogjava.net/hellotony/articles/45282.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hellotony/comments/commentRss/45282.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hellotony/services/trackbacks/45282.html</trackback:ping><description><![CDATA[
		<font size="2">    XML数据岛（data islands）就是被html页面引用或者包含的xml数据，是从IE5开始引入的一项技术。可以通过xml标签很轻松将数据岛插入到html文档中。那么怎么访问xml数据岛的数据呢，很简单，通过xml的id。在页面中的数据岛和其他的xml数据一样，可以通过标准的dom方法来进行访问。<br /><br />   数据岛的优点是可以很容易的将xml中的数据和html元素进行绑定，免去了手工把数据填充到html中的麻烦。修改数据岛中的数据，页面上与之绑定的html元素的值也随之改变。OK，先来看个数据岛之Hello World版，<br /><br />    数据岛其实就是一串xml，必须要用xml标签围起来，示例如下：<br /><br />&lt;xml id="island" &gt;<br />&lt;root&gt;<br />    &lt;name&gt;magicdoom&lt;/name&gt;<br />    &lt;age&gt;24&lt;/age&gt;<br />    &lt;email&gt;magicdoom@gmail.com&lt;/email&gt;<br />&lt;/root&gt;<br />&lt;/xml&gt;<br /><br />    数据岛有两种定义方式，一种是直接将上述xml嵌入到html页面中，另一种是见xml数据保存在单独的xml文件中，在页面只需嵌入&lt;xml id="island" src="xxx.xml" &gt;&lt;/xml&gt;<br /><br />    其中的src属性值为保存xml数据的那个文件的位置。<br /><br />    如何将上面定义好的xml数据岛绑定到html控件上呢？答案是通过datasrc，datafld属性，下面是一个将xml数据岛绑定到html控件上的示例：<br /><br />&lt;table width="100%" datasrc="#island"&gt;<br />&lt;thead&gt;<br /> &lt;tr&gt;<br />  &lt;th&gt;Name&lt;/th&gt;<br />  &lt;th&gt;Age&lt;/th&gt;<br />  &lt;th&gt;Email&lt;/th&gt;<br /> &lt;/tr&gt;<br />&lt;/thead&gt;<br />&lt;tbody&gt;<br /> &lt;tr&gt;<br />  &lt;td align="center" &gt;&lt;span  datafld="name"&gt;&lt;/span&gt;&lt;/td&gt;<br />  &lt;td align="center"&gt;&lt;span datafld="age"&gt;&lt;/span&gt;&lt;/td&gt;<br />  &lt;td align="center"&gt;&lt;span datafld="email"&gt;&lt;/span&gt;&lt;/td&gt;<br /> &lt;/tr&gt;<br />&lt;/tbody&gt;<br />&lt;/table&gt;<br /><br />例中table的datasrc属性的value为xml数据岛中的定义的id，注意必须要在前头加上# 。<br /><br />表格中的datafld属性对应于xml中的元素的名称。<br /><br />将上述数据岛和html代码保存到一个html文件中，在IE中打开，可以看到结果如下：<br /><br />Name<br />Age<br />Email<br />magicdoom<br />24<br />magicdoom@gmail.com <br /><br />下面我们来看看在javascript中怎样通过DOM访问数据岛中的数据<br /><br />xmldoc = island;     //取数据岛<br />var rootElement = xmldoc.documentElement;  //取根元素 <br /><br />//实现打印出数据岛中第一个元素的值<br /> if (rootElement.hasChildNodes())<br /> alert(rootElement.firstChild.text);<br /><br />//创建一个新的元素，添加到数据岛中<br />  var test = xmldoc.createElement('test');<br />  var testTxt = xmldoc.createTextNode("This is a test!");<br />  test.appendChild(testTxt);<br />  rootElement.appendChild(test);<br />  alert(rootElement.lastChild.text); <br /><br />//删除数据岛中的一个元素<br />rootElement.removeChild(rootElement.lastChild); <br /><br />//修改数据岛中的一个元素的值<br />rootElement.firstChild.text="new value"; <br /><br />//查找xml元素 使用getElementsByTagName返回一个element的数组<br />rootElement.getElementsByTagName("name")(0).text <br /><br />//测试数据岛绑定的效果<br />在页面中定义&lt;button  onclick="testDSO()"&gt;testDSO&lt;/button&gt;<br />function  testDSO()<br />{<br /> rootElement.getElementsByTagName("name")(0).text="modefied name";<br />}<br />//点击按钮后就会发现页面上的Name的值也随之改变 <br /><br />    XML数据岛的应用很容易和其他的技术进行结合。通过XmlHttp与后台的服务器进行交互，可以达到无刷新提交页面。前台通过js来操纵页面中的数据岛和发送数据到后台的java类，后台的java类返回XML数据到前台的js，js再将xml数据注入到页面的数据岛中。<br />    <br />    最后总结一下xml数据岛的最大优点是可以和html元素进行绑定，修改数据岛中的数据，与之绑定的html元素的值也会随之改变。但是也要看到它的缺点：<br />1.只能在IE下运行，firefox等其他的浏览器下无法使用。<br />2.安全性，xml数据岛可以通过查看html的源代码获取。 <br /><br /></font>
<img src ="http://www.blogjava.net/hellotony/aggbug/45282.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hellotony/" target="_blank">Tony</a> 2006-05-09 21:11 <a href="http://www.blogjava.net/hellotony/articles/45282.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XML与HTML的结合</title><link>http://www.blogjava.net/hellotony/articles/44036.html</link><dc:creator>Tony</dc:creator><author>Tony</author><pubDate>Sat, 29 Apr 2006 08:52:00 GMT</pubDate><guid>http://www.blogjava.net/hellotony/articles/44036.html</guid><wfw:comment>http://www.blogjava.net/hellotony/comments/44036.html</wfw:comment><comments>http://www.blogjava.net/hellotony/articles/44036.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hellotony/comments/commentRss/44036.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hellotony/services/trackbacks/44036.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">XML与HTML的结合（上）</font>
		</p>
		<font size="2">XML的局限性</font>
		<p>
				<font size="2"> 目前，许多Web网站的内容数据都存放在数据库或数据文件中。对于Web程序开发人员来说，如果要想把有用的信息从数据库中提取出来，传统的方法是在服务器端编写脚本程序（如VBScript、<i>javascript</i>、CGI、ASP、Perl等等），通过对数据库执行SQL查询得到相关记录，然后把查询结果组织成HTML页面返回给客户端，用户使用浏览器观察最终结果。 </font>
		</p>
		<p>
				<font size="2">
为了提高系统服务的灵活性、可扩展性，使服务对象范围更广，许多商业网站都尽可能地把商务规则、原始数据和表现形式当做相互独立的服务分别提供。HTML
那种蕴数据于显示之中的方式显然不合乎这种需求。因此，把原始数据存放在XML文档中，使用样式单文件显示内容是XML技术适合于电子商务的优势所在。但
从本质上来说，XSL技术不是面向数据显示的，它是一种格式转换技术，在显示手段和方式上都远不及HTML那样丰富。对编程人员来说，一种较为理想的方案
是把HTML和XML两种技术相结合，优势互补，使真正的原始数据在能够保持本来意义和结构的同时，还能充分利用HTML那千变万化的显示技巧。XML数
据岛就是这种技术融合的产物，它使用&lt;XML&gt;标签把XML数据直接嵌入到HTML页面中，从而实现了二者的优势互补。 </font>
		</p>
		<p>
				<font size="2"> IE中数据岛的处理方式 </font>
		</p>
		<p>
				<font size="2"> 为了能够处理这种内嵌XML代码的HTML页面，Internet Explorer 4.0（以下简称IE 4.0）引入了DSO（Data Source Objects，数据源对象）技术，用Java Applet实现。 </font>
		</p>
		<p>
				<font size="2"> 例如： </font>
		</p>
		<p>
				<font size="2"> &lt;APPLET CODE=“com.ms.xml.dso.XMLDSO.class” </font>
		</p>
		<p>
				<font size="2"> ID=“xmldso” WIDTH=0 HEIGHT=0 MAYSCRIPT=TRUE&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;PARAM NAME=“URL” <i>value</i>=“myXML.xml”&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;/APPLET&gt; </font>
		</p>
		<p>
				<font size="2"> 上述例子中，CODE属性指明了DSO Java小程序，MAYSCRIPT属性保证用户端脚本能够处理数据对象，PARAM标签指明了XML文档的位置。 </font>
		</p>
		<p>
				<font size="2">
使用Java的局限性在于只能在HTML文档中说明XML的URL地址，而不能直接将XML标签嵌入其中，这就和真正的数据岛方案还有一定的差距。微软在
Internet Explorer 5.0（以下简称IE 5.0）中对DSO技术进行了扩展，突破了以往的限制，使HTML和XML真正地融合到了一
起。HTML页面中支持直接使用&lt;XML&gt;标签。 </font>
		</p>
		<p>
				<font size="2"> 例如： </font>
		</p>
		<p>
				<font size="2"> &lt;HTML&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;XML ID=“xmldso”&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;?xml version=“1.0”?&gt; </font>
		</p>
		<p>
				<font size="2"> some XML…… </font>
		</p>
		<p>
				<font size="2"> &lt;/XML&gt; </font>
		</p>
		<p>
				<font size="2"> 只要保证每个数据岛的ID都是唯一的，就可以在页面中的任何必要的地方嵌入数据岛，并且这些DSO彼此都是相互独立的。 </font>
		</p>
		<p>
				<font size="2"> 除了上面例子中的这种直接嵌入方式，还可以使用外部引用方式链接数据岛。 </font>
		</p>
		<p>
				<font size="2"> 例如： </font>
		</p>
		<p>
				<font size="2"> &lt;XML ID=“xmldso” SRC=“myXML.xml”&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;/XML&gt; </font>
		</p>
		<p>
				<font size="2"> 这样，只有当公司的客户对象继续使用IE 4.0，并且为了解决这部分客户的兼容性问题时，Java Applet才是编程人员要考虑的选择方案。 </font>
		</p>
		<p>
				<font size="2">
在IE 5.0所实现的DSO技术中，如果数据是通过SQL语言对数据库进行查询得到的结果，那么就把它们存放在ADO
（ActiveX Data Objects）记录集中。服务器把这种ActiveX控件（通常是ADO记录集）发送到客户端，由客户端脚本程序做进一步
的处理。实际上，IE 5.0就是把XML数据岛作为一种特殊的ADO记录集进行处理的。 </font>
		</p>
		<p>
				<font size="2"> XML的数据绑定 </font>
		</p>
		<p>
				<font size="2"> 1．ADO记录集的映射 </font>
		</p>
		<p>
				<font size="2"> XML中的每一条主元素都被映射为ADO记录集中的一条记录，而子元素则相应地被映射到记录集中的字段（也称为域）。 </font>
		</p>
		<p>
				<font size="2"> 例如，存在XML数据岛books.xml如下： </font>
		</p>
		<p>
				<font size="2"> &lt;XML ID=“xmldso”&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;?xml version=“1.0”?&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;booklist&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;book&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;title&gt;Straight Talk About Computers&lt;/title&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;isbn&gt;72-80088-005&lt;/isbn&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;/book&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;book&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;title&gt; Gourmet Microwave &lt;/title&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;isbn&gt;72-80081-082&lt;/isbn&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;/book&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;/booklist&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;/XML&gt; </font>
		</p>
		<p>
				<font size="2"> 此时，映射后的ADO记录集为： </font>
		</p>
		<p>
				<font size="2"> title isbn </font>
		</p>
		<p>
				<font size="2"> Straight Talk About Computers 72-80088-005 </font>
		</p>
		<p>
				<font size="2"> Gourmet Microwave 72-80081-082 </font>
		</p>
		<p>
				<font size="2"> 2．与HTML元素的绑定 </font>
		</p>
		<p>
				<font size="2">
在HTML文档中嵌入数据岛之后，就可以将XML数据岛与HTML元素绑定在一起。每一个DSO条目（即数据岛）都有唯一的ID号。首先将HTML元素中
的DATASRC属性设置为相应的ID，就可以把HTML元素和数据岛联系在一起。然后再通过设置DATAFLD属性值，来确定所提取的XML元素。 </font>
		</p>
		<p>
				<font size="2"> 例如，与DIV元素绑定的代码如下： </font>
		</p>
		<p>
				<font size="2"> &lt;DIV ID=title DATASRC=#xmldso DATAFLD=“title”&gt;&lt;/DIV&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;DIV ID=price DATASRC=#xmldso DATAFLD=“isbn”&gt;&lt;/DIV&gt; </font>
		</p>
		<p>
				<font size="2"> 注意：并非所有的HTML元素都能与XML数据岛绑定。目前，支持这种DSO绑定机制的元素如下： </font>
		</p>
		<p>
				<font size="2">
A、APPLET、BUTTON、DIV、FRAME、IFRAME、 IMG、INPUT (此处类型是：CHECKBOX、HIDDEN、
 LABEL、PASSWORD、RADIO和TEXT)、LABEL、 MARQUEE、SELECT、SPAN、TABLE和 TEXTAREA。 </font>
		</p>
		<p>
				<font size="2"> 3．以表格方式显式XML数据 </font>
		</p>
		<p>
				<font size="2"> 若把XML数据与TABLE元素绑定在一起，就可以自动地显示为多行的表格形式。 </font>
		</p>
		<p>
				<font size="2"> 例如，XML数据与TABLE元素绑定的代码如下： </font>
		</p>
		<p>
				<font size="2"> &lt;TABLE BORDER=1 DATASRC=“#xmldso”&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;THEAD&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;TR&gt;&lt;TH&gt;Title&lt;/TH&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;TH&gt;ISBN&lt;/TH&gt;&lt;/TR&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;/THEAD&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;TBODY&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;TR&gt;&lt;TD&gt;&lt;DIV DATAFLD=“title”&gt;&lt;/DIV&gt;&lt;/TD&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;TD&gt;&lt;DIV DATAFLD=“isbn”&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;/TBODY&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;/TABLE&gt; </font>
		</p>
		<p>
				<font size="2">
这样，通过将TABLE元素中的DATASRC属性设定为#xmldso，把两者绑定起来。表格内部分为表头（THEAD）和表体（TBODY）两部分。
每一个&lt;book&gt;元素都会显示为一行表格，具体每一栏显示哪一项数据，则由DIV元素中的DATAFLD属性指定。</font>
		</p>
		<p>
				<font size="2">XML与HTML的结合（下）</font>
		</p>
		<p>
				<font size="2"> XML的嵌套处理 </font>
		</p>
		<p>
				<font size="2"> 一般情况下，我们从数据库中查询得到的结果集可能很大，所以从服务器返回到客户端时，数据会被分成若干个页面分别进行传递。此时，利用TABLE元素中的DATAPAGESIZE属性可以指定每个页面包含记录集条目的个数。 </font>
		</p>
		<p>
				<font size="2"> 例如： </font>
		</p>
		<p>
				<font size="2"> &lt;TABLE DATASRC=“#xmldso” DATAPAGESIZE=10&gt; </font>
		</p>
		<p>
				<font size="2">
很显然，如果XML数据格式是对称的，则无论是映射到ADO记录集还是绑定到表格元素上，效果都会很好。而在实际应用中，XML数据为非对称的例子也很
多，比如一本书的作者可能就不止一位，这在映射和绑定时都会产生一定的麻烦。解决问题的办法就是利用嵌套。每一行表格仍对应一条主元素，每一栏也对应着一
个子元素。对于重复元素，则使用嵌套的表格。我们假设在books.xml中，第一本书的作者为Dean Straight，第二本书的作者为
Charlotte Cooper、Shelley Burke和Regina Murphy。此时，绑定过程如下： </font>
		</p>
		<p>
				<font size="2"> ● 创建TABLE元素，并将数据岛ID赋值给DATAFLD属性； </font>
		</p>
		<p>
				<font size="2"> ● 对于单独的XML元素，如&lt;isbn&gt;，创建TD元素，并设定相应的DATAFLD属性； </font>
		</p>
		<p>
				<font size="2"> ● 对于重复元素，在TD元素内部嵌套一个表格； </font>
		</p>
		<p>
				<font size="2"> ● 用单行单列的形式显示作者信息。 </font>
		</p>
		<p>
				<font size="2"> 注意这里的DATAFLD属性必须设定为“$TEXT”， </font>
		</p>
		<p>
				<font size="2"> 以保证嵌套元素的内容被全部显示在指定的元素中。 </font>
		</p>
		<p>
				<font size="2"> 完整的HTML代码如下所示： </font>
		</p>
		<p>
				<font size="2"> &lt;TABLE BORDER=1 DATASRC=“#xmldso”&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;THEAD&gt;&lt;TR&gt;&lt;TH&gt;Title&lt;/TH&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;TH&gt;ISBN&lt;/TH&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;TH&gt;Author&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;TBODY&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;TR&gt;&lt;TD&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;DIV DATAFLD=“title”&gt;&lt;/DIV&gt;&lt;/TD&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;TD&gt;&lt;DIV DATAFLD=“isbn”&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;/DIV&gt;&lt;/TD&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;TD&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;TABLE BORDER=0 DATASRC=“#xmldso” DATAFLD=“author”&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;TR&gt;&lt;TD&gt;&lt;SPAN DATAFLD=“$Text”&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;/TABLE&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;/TD&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;/TR&gt;&lt;/TBODY&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;/TABLE&gt; </font>
		</p>
		<p>
				<font size="2"> 事实上，使用DSO效果最好的情况是针对结构对称的数据，而处理非对称数据更有效的办法是使用我们以后将要介绍的DOM技术。 </font>
		</p>
		<p>
				<font size="2"> DSO技术的应用 </font>
		</p>
		<p>
				<font size="2"> 1． 访问元素的属性 </font>
		</p>
		<p>
				<font size="2"> 用DSO访问元素的属性很简单，可以直接把属性按子元素来处理。 </font>
		</p>
		<p>
				<font size="2"> 例如： </font>
		</p>
		<p>
				<font size="2"> &lt;book isbn=“9-001-122-12”&gt; </font>
		</p>
		<p>
				<font size="2"> …… </font>
		</p>
		<p>
				<font size="2"> &lt;/book&gt; </font>
		</p>
		<p>
				<font size="2"> 这样，在绑定到HTML表格中时，就可以直接按子元素来处理： </font>
		</p>
		<p>
				<font size="2"> &lt;TD&gt;&lt;SPAN DATAFLD=“isbn”&gt; &lt;/SPAN&gt;&lt;/TD&gt; </font>
		</p>
		<p>
				<font size="2"> 如果遇到属性名和子元素名一样的情况，在元素名前加上“!”进行区分。 2．遍历记录集 </font>
		</p>
		<p>
				<font size="2">
DSO把XML数据岛当做ADO记录集进行处理的一大好处是可以利用ADO提供的各种方法对数据源进行访问，尤其是当把数据岛与类似SPAN、DIV和
INPUT等HTML元素绑定时。通常这些元素显示的是记录集的首条记录，要想对记录集进行遍历浏览，可以使用ADO的方法 : Move、
MoveFirst、MoveLast、MoveNext和MovePrevious。比如创建一个按钮响应函数，只要用户点击“Next”按钮，就可以
逐条浏览相应的记录。 </font>
		</p>
		<p>
				<font size="2"> 例如： </font>
		</p>
		<p>
				<font size="2"> &lt;XML ID=“xmldso” SRC=“books.xml”&gt; </font>
		</p>
		<p>
				<font size="2"> &lt;/XML&gt; </font>
		</p>
		<p>
				<font size="2"> Sub btnNext_<i>onclick</i>() </font>
		</p>
		<p>
				<font size="2"> xmldso.RecordSet.MoveNext </font>
		</p>
		<p>
				<font size="2"> End Sub </font>
		</p>
		<p>
				<font size="2"> 3．与Script语言相结合 </font>
		</p>
		<p>
				<font size="2"> 有些用户比较习惯编写Script语言，利用DSO技术同样可以与各种Script很好地结合在一起。 </font>
		</p>
		<p>
				<font size="2"> 例如（以VB Script为例），访问记录集时，代码如下: </font>
		</p>
		<p>
				<font size="2"> Dim rsBooks </font>
		</p>
		<p>
				<font size="2"> Set rsBooks = xmldso.RecordSet </font>
		</p>
		<p>
				<font size="2"> 访问字段（子元素）的值： </font>
		</p>
		<p>
				<font size="2"> Dim sTitle </font>
		</p>
		<p>
				<font size="2"> sTitle = rsBooks(“title”) </font>
		</p>
		<p>
				<font size="2"> 可以使用innerText和innerHTML属性把得到的值传递给HTML元素。例如，有一个DIV元素名为divTitle，赋值代码如下所示： </font>
		</p>
		<p>
				<font size="2"> divTitle.innerTEXT = sTitle </font>
		</p>
		<p>
				<font size="2"> 利用脚本程序还可以处理许多DSO事件，下表列举了其中的一部分事件： </font>
		</p>
		<p>
				<font size="2"> 在脚本中处理各种事件的方法就是在&lt;SCRIPT&gt;标签中使用FOR属性指定XML数据岛ID，使用EVENT属性确定事件类型。 </font>
		</p>
		<p>
				<font size="2"> 例如，获取记录集中条目的个数： </font>
		</p>
		<p>
				<font size="2"> &lt;SCRIPT Language=“VB Script” FOR=“xmldso” EVENT=“onDataAvailable”&gt; </font>
		</p>
		<p>
				<font size="2"> lblRecords.<i>value</i> = booklist.RecordSet.RecordCount </font>
		</p>
		<p>
				<font size="2"> &lt;/SCRIPT&gt; </font>
		</p>
		<p>
				<font size="2">
除了显示记录数据之外，脚本程序还可以对记录集进行快速查询、排序、编辑等操作。但要指出的是，虽然ADO技术中提供了类似SortColumn和
SortAscending等方法对XML数据进行排序，但是效果不如XSL中的排序操作，所以建议大家充分利用XSL技术来实现这部分功能。 </font>
		</p>
		<p>
				<font size="2">
其余的功能，如利用脚本对记录集进行诸如增加、删除、修改等操作，或是分页显示HTML表格等等，在这里就不一一举例说明了，用法与前面的操作大同小异。
最后需要说明的是，所有对DSO对象的操作都是在用户端完成的，实际上是服务器数据对象的一份复制品，这样做的好处是避免了网络承受大量数据通信的负担。
但这时用户端所做的任何操作对服务器上存储的数据毫无影响，如果要想对服务器记录也进行修改，那么就要用到客户端与服务器端的数据交换技术，我们将在以后
对此进行介绍。</font>
		</p>
<img src ="http://www.blogjava.net/hellotony/aggbug/44036.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hellotony/" target="_blank">Tony</a> 2006-04-29 16:52 <a href="http://www.blogjava.net/hellotony/articles/44036.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据岛</title><link>http://www.blogjava.net/hellotony/articles/43710.html</link><dc:creator>Tony</dc:creator><author>Tony</author><pubDate>Fri, 28 Apr 2006 01:39:00 GMT</pubDate><guid>http://www.blogjava.net/hellotony/articles/43710.html</guid><wfw:comment>http://www.blogjava.net/hellotony/comments/43710.html</wfw:comment><comments>http://www.blogjava.net/hellotony/articles/43710.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hellotony/comments/commentRss/43710.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hellotony/services/trackbacks/43710.html</trackback:ping><description><![CDATA[
		<font size="2">使用记录集管理XML文档中数据的第一步是创建一个记录集对象；然后再通过该记录集对象的相关属性和方法来管理其中的数据。通过数据岛技术引入外部的XML文档时，一个记录集对象就会被自动创建。<br /><br />1. 声明记录集<br /><br />首先定义一个数据岛，然后再调用该数据岛的一个属性从而生成一个记录集，具体语法类似下面程序所示：<br /><br />&lt;xml id="xmlid" src="asp.xml"&gt;&lt;/xml&gt;<br />&lt;script language="vbscript"&gt;<br />set rs=xmlid.recordset<br />……<br />&lt;/script&gt;<br /><br />上面语句第一行中id属性是标识数据源的惟一名字，第二个参数src指定了所调用外部XML数据文件的路径。<br /><br />2. 显示记录集<br /><br />记录集中的每一条记录都对应数据表中的一行数据。要显示记录集中的所有记录，只要简单地做一个循环，具体的语法类似下面程序：<br /><br />whild not rs.eof<br />document.write "&lt;tr&gt;&lt;td bgcolor='#99ff99'&gt;"<br />document.write(rs("id"))<br />document.write "&lt;/td&gt;&lt;td bgcolor='#99ff99'&gt;"<br />document.write(rs("name"))<br />document.write "&lt;/td&gt;&lt;td bgcolor='#99ff99'&gt;"<br />document.write(rs("***"))<br />document.write "&lt;/td&gt;&lt;/tr&gt;"<br />rs.movenext<br />wend<br /><br />刚打开一个记录集时默认的当前记录是第一条记录，上面方法通过调用记录集对象的MoveNext方法，使当前记录移动到下一条记录。更多方法请参见：<br /><br />3. 操作记录集的方法<br /><br />addnew 向记录集中添加一条新记录<br />delete 从记录集中删除一条记录<br /><br />MoveFirst 移动到记录集的第一条记录<br />MoveNext 移动到记录集的下一条记录<br />MovePrevious 移动到记录集的上一条记录<br />MoveLast 移动到记录集的最后一条记录<br /><br />BOF 标明当前位置在记录集中的第一条记录之前。<br />EOF 标明当前位置在记录集中的最后一条记录之后。</font>
<img src ="http://www.blogjava.net/hellotony/aggbug/43710.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hellotony/" target="_blank">Tony</a> 2006-04-28 09:39 <a href="http://www.blogjava.net/hellotony/articles/43710.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>