XML与HTML的结合(下)

xml

     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-08-01 17:05:16

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

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

java dom-关于Java Dom 解析XML后,在TableTreeView下的修改问题

问题描述 关于Java Dom 解析XML后,在TableTreeView下的修改问题 最近在看Java解析XML的相关资料,在尝试用DOM解析时,出现一些小问题. 用DOM解析XML后,在TableTreeView里显示,然后调用了 ViewerColumn 中的 setEditingSupport() 方法,对XML标签间 TextContent 进行修改,但是在判断能否修改时产生了一些问题,不知道如何在 canEdit() 中进行判断,要求只对标签的TextContent进行编辑. pro

Asp.net+Xml+js实现无线级下拉菜单

地址如下:http://xucanzhao.cnblogs.com/archive/2005/09/01/228012.htmlAsp.net+Xml+js实现无线级下拉菜单

Prototype Ajax读取XML文档实现联动下拉框实例

在使用PHP进行WEB2.0网站开发时,时常需要用到Ajax技术来增加用户体验,当前比较流行的Ajax开发框架有Prototype,Jquery,Lightbox等,今天和大家分享如何利用Prototype和XML文档进行交互以实现Ajax联动下拉菜单的例子. Ajax(Asynchronous JavaScript and XML)使用XHTML和CSS标准化呈现,使用DOM实现动态显示和交互,使用XML和XSTL进行数据交换与处理,使用XMLHttpRequest对象进行异步数据读取,使用J

JavaScript XML省市县三级联动下拉菜单

js代码  代码如下 复制代码 <html> <head runat="server">     <title>省市县三级联动菜单</title>             <script   language="javascript"   type="text/javascript">   //首先需要初始化   var   xmlDoc;     var   nodeIndex;  

将某一目录下的所有相同格式的 XML文件绑定到不同的DataGrid

datagrid|xml 将某一目录下的所有相同格式的 XML文件绑定到不同的DataGrid的方法. <%@ Page Language="vb"%><%@ Import NameSpace = "System" %><%@ Import NameSpace = "System.Xml" %><%@ Import NameSpace = "System.IO" %><%@

android studio-eclipse下的drawable下的xml文件

问题描述 eclipse下的drawable下的xml文件 安卓初学者问题:eclipse下的drawable下面的xml文件,对应在androidstudio下的哪个位置? 解决方案 1.点击project 视图 2.选择 android 界面 3.按图中所示即可找到 android studio 将图片与drawable.xml都放在res/ drawable 下了 如果这样看不清楚可以去项目位置里面找到drawable文件夹,在这里xml文件与图片是分开的 解决方案二: 一样的位置,没有的

使用 Oracle XQuery 查询、构建和转换 XML

oracle|xml|转换 在 Oracle 数据库 10g 第 2 版中,Oracle 引入了一个与该数据库集成的全功能自带 XQuery 引擎,该引擎可用于完成与开发支持 XML 的应用程序相关的各种任务.XQuery 是一种用于处理 XML 数据模型的查询语言,它实际上可操作任何类型的可用 XML 表达的数据.尽管 Oracle XQuery 实施使您可以使用数据库数据和外部数据源,但在处理数据库中存储的结构化数据方面,Oracle XML DB 通常可以显著提高性能. 本文提供的示例不仅