XML与HTML的结合(下)

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对象的操作都是在用户端完成的,实际上是服务器数据对象的一份复制品,这样做的好处是避免了网络承受大量数据通信的负担。但这时用户端所做的任何操作对服务器上存储的数据毫无影响,如果要想对服务器记录也进行修改,那么就要用到客户端与服务器端的数据交换技术,我们将在以后对此进行介绍。

(0)

相关推荐

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

    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

  • 解决Android Studio XML编辑界面不显示下面的Text和Design选项卡

    问题描述: 在XML布局编写中,下方不显示Text和Design选项卡,无法切换编程和界面视图 解决方法: 1.检查右上角有没有这些选项,这几个按钮可以用来切换 2.上述步骤失败,再尝试改一下这个版本 3.上述两种方法都无法调出Text和Design选项卡,可使用下面两个替代方法 (1)快捷键: Alt+shift+左箭头:跳转Text界面 Alt+Shift+右箭头:跳转Design界面 (2)从Design进入XML,可尝试在界面上右击一个控件,用go to xml能不能去往text界面 以

  • Linux 下读XML 的类详解及实现代码

     Linux 下读XML 的类详解及实现代码 在Linux下写程序,常需要读一些配置文件.现有的XML工具很多,可以方便的编辑和生成XML. 但VC中用的XML解析器在Linux下不能用.只好自已写了个.用了一下,还不错. #include <stdio.h> #include <stdlib.h> // ********************************************************************** // // XML解析类(hongh

  • .net 操作xml的简单方法及说明

    复制代码 代码如下: using System.Xml;//初始化一个xml实例XmlDocument xml=new XmlDocument();//导入指定xml文件xml.Load(path);xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));//指定一个节点XmlNode root=xml.SelectSingleNode("/root");//获取节点下所有直接子节点X

  • Android开发实现读取excel数据并保存为xml的方法

    本文实例讲述了Android开发实现读取excel数据并保存为xml的方法.分享给大家供大家参考,具体如下: 前阵子,公司请外面人翻译了一些android中values中的一些strings,然而保存的都是excel格式,如果单纯的将excel中的数据粘贴到指定的xml中的话,工作量非常的大,于是,自己写了个简单的demo,将excel中的数据读取并保存为xml对应的数据,下面的demo和图片展示: 1.数据保存在BeanValue中,包括key和value,方便后续数据读取 package c

  • XML CDATA是什么?

    All text in an XML document will be parsed by the parser. XML文档中的所有文本都会被解析器解析. Only text inside a CDATA section will be ignored by the parser. 只有CDATA部分的文本会被解析器忽略 Parsed Data 被解析的数据 XML parsers normally parse all the text in an XML document. XML解析器通常

  • XML CDATA的作用

    这就要用XML CDATA 在XML文档中的所有文本都会被解析器解析. 只有在CDATA部件之内的文本会被解析器忽略. 解析数据 XML 解析器通常情况下会处理XML文档中的所有文本. 当XML元素被解析的时候,XML元素内部的文本也会被解析: <message>This text is also parsed</message> XML解析器这样做的原因是XML元素内部可能还包含了别的元素,象下面的例子,name元素内部包含了first和last两个元素: <name>

  • 详述 tomcat 中的 server.xml 配置文件示例

    正文 1 前言 Tomcat 隶属于 Apache 基金会,是开源的轻量级 Web 应用服务器,使用非常广泛.server.xml是 Tomcat 中最重要的配置文件,server.xml的每一个元素都对应了 Tomcat 中的一个组件:通过对 XML 文件中元素的配置,可以实现对 Tomcat 中各个组件的控制.因此,学习server.xml文件的配置,对于了解和使用 Tomcat 至关重要. 本文将通过实例,介绍server.xml中各个组件的配置,并详细说明 Tomcat 各个核心组件的作

  • 详解Ubuntu16.04下Hadoop 2.7.3的安装与配置

    一.Java环境搭建 (1)下载JDK并解压(当前操作系统为Ubuntu16.04,jdk版本为jdk-8u111-Linux-x64.tar.gz) 新建/usr/java目录,切换到jdk-8u111-linux-x64.tar.gz所在目录,将这个文件解压缩到/usr/java目录下. tar -zxvf jdk-8u101-linux-x64.tar.gz -C /usr/java/ (2)设置环境变量 修改.bashrc,在最后一行写入下列内容. sudo vim ~/.bashrc

  • springboot下配置多数据源的方法

    一.springboot 简介 SpringBoot使开发独立的,产品级别的基于Spring的应用变得非常简单,你只需"just run". 我们为Spring平台及第三方库提 供开箱即用的设置,这样你就可以有条不紊地开始.多数Spring Boot应用需要很少的Spring配置. 你可以使用SpringBoot创建Java应用,并使用 java -jar 启动它或采用传统的war部署方式.我们也提供了一个运行"spring 脚本"的命令行工具. 二.传统的Dat

随机推荐