XML与HTML的结合(下)_XML/RSS

XML的嵌套处理

一般情况下,我们从数据库中查询得到的结果集可能很大,所以从服务器返回到客户端时,数据会被分成若干个页面分别进行传递。此时,利用TABLE元素中的DATAPAGESIZE属性可以指定每个页面包含记录集条目的个数。

例如:

<TABLE DATASRC=“#xmldso” DATAPAGESIZE=10>

很显然,如果XML数据格式是对称的,则无论是映射到ADO记录集还是绑定到表格元素上,效果都会很好。而在实际应用中,XML数据为非对称的例子也很多,比如一本书的作者可能就不止一位,这在映射和绑定时都会产生一定的麻烦。解决问题的办法就是利用嵌套。每一行表格仍对应一条主元素,每一栏也对应着一个子元素。对于重复元素,则使用嵌套的表格。我们假设在books.xml中,第一本书的作者为Dean Straight,第二本书的作者为Charlotte Cooper、Shelley Burke和Regina Murphy。此时,绑定过程如下:

● 创建TABLE元素,并将数据岛ID赋值给DATAFLD属性;

● 对于单独的XML元素,如<isbn>,创建TD元素,并设定相应的DATAFLD属性;

● 对于重复元素,在TD元素内部嵌套一个表格;

● 用单行单列的形式显示作者信息。

注意这里的DATAFLD属性必须设定为“$TEXT”,

以保证嵌套元素的内容被全部显示在指定的元素中。

完整的HTML代码如下所示:

<TABLE BORDER=1 DATASRC=“#xmldso”>

<THEAD><TR><TH>Title</TH>

<TH>ISBN</TH>

<TH>Author</TH></TR></THEAD>

<TBODY>

<TR><TD>

<DIV DATAFLD=“title”></DIV></TD>

<TD><DIV DATAFLD=“isbn”>

</DIV></TD>

<TD>

<TABLE BORDER=0 DATASRC=“#xmldso” DATAFLD=“author”>

<TR><TD><SPAN DATAFLD=“$Text”></SPAN></TD></TR>

</TABLE>

</TD>

</TR></TBODY>

</TABLE>

事实上,使用DSO效果最好的情况是针对结构对称的数据,而处理非对称数据更有效的办法是使用我们以后将要介绍的DOM技术。

DSO技术的应用

1. 访问元素的属性

用DSO访问元素的属性很简单,可以直接把属性按子元素来处理。

例如:

<book isbn=“9-001-122-12”>

……

</book>

这样,在绑定到HTML表格中时,就可以直接按子元素来处理:

<TD><SPAN DATAFLD=“isbn”> </SPAN></TD>

如果遇到属性名和子元素名一样的情况,在元素名前加上“!”进行区分。 2.遍历记录集

DSO把XML数据岛当做ADO记录集进行处理的一大好处是可以利用ADO提供的各种方法对数据源进行访问,尤其是当把数据岛与类似SPAN、DIV和INPUT等HTML元素绑定时。通常这些元素显示的是记录集的首条记录,要想对记录集进行遍历浏览,可以使用ADO的方法 : Move、MoveFirst、MoveLast、MoveNext和MovePrevious。比如创建一个按钮响应函数,只要用户点击“Next”按钮,就可以逐条浏览相应的记录。

例如:

<XML ID=“xmldso” SRC=“books.xml”>

</XML>

Sub btnNext_onclick()

xmldso.RecordSet.MoveNext

End Sub

3.与Script语言相结合

有些用户比较习惯编写Script语言,利用DSO技术同样可以与各种Script很好地结合在一起。

例如(以VB Script为例),访问记录集时,代码如下:

Dim rsBooks

Set rsBooks = xmldso.RecordSet

访问字段(子元素)的值:

Dim sTitle

sTitle = rsBooks(“title”)

可以使用innerText和innerHTML属性把得到的值传递给HTML元素。例如,有一个DIV元素名为divTitle,赋值代码如下所示:

divTitle.innerTEXT = sTitle

利用脚本程序还可以处理许多DSO事件,下表列举了其中的一部分事件:

在脚本中处理各种事件的方法就是在<SCRIPT>标签中使用FOR属性指定XML数据岛ID,使用EVENT属性确定事件类型。

例如,获取记录集中条目的个数:

<SCRIPT Language=“VB Script” FOR=“xmldso” EVENT=“onDataAvailable”>

lblRecords.value = booklist.RecordSet.RecordCount

</SCRIPT>

除了显示记录数据之外,脚本程序还可以对记录集进行快速查询、排序、编辑等操作。但要指出的是,虽然ADO技术中提供了类似SortColumn和SortAscending等方法对XML数据进行排序,但是效果不如XSL中的排序操作,所以建议大家充分利用XSL技术来实现这部分功能。

其余的功能,如利用脚本对记录集进行诸如增加、删除、修改等操作,或是分页显示HTML表格等等,在这里就不一一举例说明了,用法与前面的操作大同小异。最后需要说明的是,所有对DSO对象的操作都是在用户端完成的,实际上是服务器数据对象的一份复制品,这样做的好处是避免了网络承受大量数据通信的负担。但这时用户端所做的任何操作对服务器上存储的数据毫无影响,如果要想对服务器记录也进行修改,那么就要用到客户端与服务器端的数据交换技术,我们将在以后对此进行介绍。

时间: 2024-10-23 04:05:39

XML与HTML的结合(下)_XML/RSS的相关文章

XML加ASP实现网页“本地化”_XML/RSS

想让你的站点能被来自多个国家的冲浪者看明白吗?无疑,这就需要提供多个语言版本的页面内容,也就是所谓的 "本地化"功能.最容易想到的方法就是分别编写多种语言的页面内容,然后放置到不同的目录下,再在首页上添加导航 到各自语言位置的链接.很明显,这样的处理方式将浪费许多包含公共元素以及设计框架的空间,而且修改.维护也很烦 琐.有什么好方法吗?当然,本文就介绍如何结合使用XML与ASP技术实现这个目的.  本文将讨论如下几个方面的内容:创建包含语言资源的XML文档.使用ASP创建Web页面模板

为何XML对Web服务很重要_XML/RSS

Web服务经常从它的组件技术的角度来进行描述.SOAP.UDDI.WSDL.XML以及HTTP各自组成了Web服务体系的一部分,它们都发挥了重要作用.让我们看看XML技术对Web服务平台的贡献. 标准化  与其它Web服务技术相比,标准化是XML特色之一.XML提供了Web服务应用程序之间传输数据的标准格式.万维网联盟(W3C)管理XML标准并发布给全球的XML技术提供者,这就确保了XML产品的兼容性. 除了XML引擎和产品外还有XML文法(grammar).每一个XML语法都是一种在某个特定问

给XML文档添加新 ”records”_XML/RSS

本文所举的例子与保存HTML格式数据至XML类似.在以往当表格被提交后,我们通常会创建一个新的文档,现在只要文档已经存在,那么直接添加就可以了.此种技术的使用与创建基本数据类似. 在前面的文章里,我已经演示了如何使用XMLDOM.因此,我们可以直接进入本文的示例. 我们需要考虑的第一件事是我们将用于添加新"记录"的HTML 表单.在"将HTML表单数据保存至XML"例子中我们已使用过此表单,只是更改了文件名,但代码是相同的. AddContact.html: 复制代

用Flash和XML来构造一个聊天室_XML/RSS

点击这里下载源文件 前面的教程我们介绍了Flash与XML结合使用的原理以及一个论坛的实现,下面我们继续结合Flash与XML来实现一个简单的聊天室,有在线聊天.在线人员名单.在线时间.简单的管理操作等功能.根据需要在此基础上稍作修改,就可以实现一个功能比较完备的聊天室了. 一.原理 用Flash和XML来构造聊天室,跟直接用Flash和Asp来构造聊天室的基本原理是一样的.都是先在Flash端发送一个XML请求到服务器端,然后等待从服务器端的XML返回值,当值返回Flash端后,解释所返回的X

使用XML实现BBS(主题列表篇)_XML/RSS

表A: 1-0-1,this is a test 3-1-1,this is a test 4-3-1,this is a test 5-3-1,this is a test 2-0-2,this is a test 上面是BBS主题列表的一个例子.一般来说,假如不是使用Oracle(Oracle 有一条查询语句可以自动生成家族树,请查阅Select ... startwith ... connect by ...语句),那么如何实现上例的列表是一件费事的工作(相信许多程序员都写过). 如果我们

XML在语音合成中的应用_XML/RSS

    互联网以及和它相关的一切现在似乎随处可见.您也许已经试过接到夜间电话推销员的语音电话.又或者曾经接到过当地药店给您的处方通知.现在,有一种新技术可以使用语音合成结合XML技术传送语音信息了.      以语音传递信息的手段并不是什么新东西.它是我们几千年来一直使用的交流方法.而且,从一台计算机那里接收到电话也并非什么新发明.许多语音技术到现在已经大行其道了,从传真机.自动拨号器到集成语音回复系统(IVR).电话当然是它最普遍的应用.     传统的语音系统使用预先录制好的样本.词典和音素

什么是RSS?RSS及其发展历程_XML/RSS

RSS是2004年最热门的互联网词汇之一,不过,相对于博客(BLOG)来说,RSS的知名度相应会低很多,而且至今还没有一个非常贴切的中文词汇,也许以后无需中文名,大家都习惯于直接叫RSS了.RSS之所以同BLOG一样会被认为是热门词汇的一个原因,个人推测,应该是许多分析人士认识到RSS将要对互联网内容的浏览方法所产生的巨大影响. 什么是RSS呢?RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是目前使用最广泛的XML应用.RSS搭建了信息迅速传播的一个

struts-Struts2的web.xml为什么要放在WEB-INF下

问题描述 Struts2的web.xml为什么要放在WEB-INF下 web.xml放在WebContent下问什么不可以呢,求指教 解决方案 webxml是tomcat装载页面的时候才用的,不是自身启动的必要.webinf是针对具体的war应用而设计的一个webinf对应一个具体的应用,tomcat 在加载这个war应用的时候根据webinf来具体解析网站结构.并启动浏览器来正确显示. 解决方案二: 因为你要启动tomcat,tomcat的启动项目文件你可以取tomcat里取查,至于Strut

安卓开发-android项目中一个Activity一般配一个xml文件,什么情况下配多个xml文件呢

问题描述 android项目中一个Activity一般配一个xml文件,什么情况下配多个xml文件呢 android项目中一个Activity一般配一个xml文件,什么情况下配多个xml文件呢 有没有Activity不需要xml文件的情况呢 解决方案 多个xml一般是需要适配不同大小的屏幕,安卓会根据屏幕大小自动加载不同size的屏幕的xml,安卓开发是mvc结构,activity一定需要一个view,通常是需要xml做view,但是也可以自定义一个view然后activity加载这个view

javascript Xml增删改查(IE下)操作实现代码_javascript技巧

html文件: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>j