ie中数据岛的处理方式
为了能够处理这种内嵌xml代码的html页面,inte.net explorer 4.0(以下简称ie 4.0)引入了dso(data source objects,数据源对象)技术,用java applet实现。
例如:
<applet code=“com.ms.xml.dso.xmldso.class”
id=“xmldso” width=0 height=0 mayscript=true>
<param name=“url” value=“myxml.xml”>
</applet>
上述例子中,code属性指明了dso java小程序,mayscript属性保证用户端脚本能够处理数据对象,param标签指明了xml文档的位置。
使用java的局限性在于只能在html文档中说明xml的url地址,而不能直接将xml标签嵌入其中,这就和真正的数据岛方案还有一定的差距。微软在inte.net explorer 5.0(以下简称ie 5.0)中对dso技术进行了扩展,突破了以往的限制,使html和xml真正地融合到了一起。html页面中支持直接使用<xml>标签。
例如:
<html>
<?xml version=“1.0”?>
some xml……
</xml>
只要保证每个数据岛的id都是唯一的,就可以在页面中的任何必要的地方嵌入数据岛,并且这些dso彼此都是相互独立的。
除了上面例子中的这种直接嵌入方式,还可以使用外部引用方式链接数据岛。
例如:
<xml id=“xmldso” src=“myxml.xml”>
</xml>
这样,只有当公司的客户对象继续使用ie 4.0,并且为了解决这部分客户的兼容性问题时,java applet才是编程人员要考虑的选择方案。
在ie 5.0所实现的dso技术中,如果数据是通过sql语言对数据库进行查询得到的结果,那么就把它们存放在ado(activex data objects)记录集中。服务器把这种activex控件(通常是ado记录集)发送到客户端,由客户端脚本程序做进一步的处理。实际上,ie 5.0就是把xml数据岛作为一种特殊的ado记录集进行处理的。
xml的数据绑定
1.ado记录集的映射
xml中的每一条主元素都被映射为ado记录集中的一条记录,而子元素则相应地被映射到记录集中的字段(也称为域)。
<?xml version=“1.0”?>
<booklist>
<book>
<title>straight talk about computers</title>
<isbn>72-80088-005</isbn>
</book>
<book>
<title> gourmet microwave </title>
<isbn>72-80081-082</isbn>
</book>
</booklist>
</xml>
此时,映射后的ado记录集为:
title isbn
straight talk about computers 72-80088-005
gourmet microwave 72-80081-082
2.与html元素的绑定
在html文档中嵌入数据岛之后,就可以将xml数据岛与html元素绑定在一起。每一个dso条目(即数据岛)都有唯一的id号。首先将html元素中的datasrc属性设置为相应的id,就可以把html元素和数据岛联系在一起。然后再通过设置datafld属性值,来确定所提取的xml元素。
例如,与div元素绑定的代码如下:
<div id=title datasrc=#xmldso datafld=“title”></div>
<div id=price datasrc=#xmldso datafld=“isbn”></div>
注意:并非所有的html元素都能与xml数据岛绑定。目前,支持这种dso绑定机制的元素如下:
a、applet、button、div、frame、iframe、 img、input (此处类型是:checkbox、hidden、 label、password、radio和text)、label、 marquee、select、span、table和 textarea。
3.以表格方式显式xml数据
若把xml数据与table元素绑定在一起,就可以自动地显示为多行的表格形式。
例如,xml数据与table元素绑定的代码如下:
<table border=1 datasrc=“#xmldso”>
<thead>
<tr><th>title</th>
<th>isbn</th></tr>
</thead>
<tbody>
<tr><td><div datafld=“title”></div></td>
<td><div datafld=“isbn”>
</div></td></tr>
</tbody>
</table>
这样,通过将table元素中的datasrc属性设定为#xmldso,把两者绑定起来。表格内部分为表头(thead)和表体(tbody)两部分。每一个<book>元素都会显示为一行表格,具体每一栏显示哪一项数据,则由div元素中的datafld属性指定。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器