首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > CSS >

html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据

2012-09-03 
html中的数据岛:利用DSO和javascript在html中动态加载和浏览xml数据html中的数据岛:利用DSO和javascript在

html中的数据岛:利用DSO和javascript在html中动态加载和浏览xml数据

html中的数据岛:利用DSO和javascript在html中动态加载和浏览xml数据1.DSO也叫做数据源对象,IE?4.0引入了DSO,在IE?5.0对DSO技术进行很大的扩展。以往如果数据是通过SQL语言对数据库进行查询得到的结果,那么就把它们存放在ADO(ActiveX?Data?Objects)记录集中。服务器把这种ActiveX控件(通常是ADO记录集)发送到客户端,由客户端脚本程序做进一步的处理。实际上,IE?5.0就是把XML数据岛作为一种特殊的ADO记录集进行处理的。在这里,你把它想像成数据库,而IE则是与数据库联系的客户端。或许大家还记得asp中的recordset,那么在这里DSO对象也是一个recordset,只不过它不在服务器脚本中操作,而是在javascript中操作。

?

附两个以下用到的xml文档:

a.DsoData.xmlhtml中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<?xml?version="1.0"?encoding="gb2312"?>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<students>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<stu>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<name>张三</name>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<age>15</age>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<class>1班</class>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</stu>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<stu>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<name>李四</name>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<age>14</age>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<class>1班</class>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</stu>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<stu>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<name>王五</name>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<age>14</age>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<class>1班</class>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</stu>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<stu>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<name>刘六</name>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<age>15</age>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<class>2班</class>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</stu>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<stu>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<name>小明</name>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<age>15</age>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<class>2班</class>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</stu>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</students>
b.ClassData.xml
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<?xml?version="1.0"?encoding="gb2312"?>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<classes>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<class>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<id>1</id>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<name>一班</name>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</class>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<class>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<id>2</id>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<name>二班</name>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</class>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<class>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<id>3</id>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<name>三班</name>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</class>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</classes>
2.如果是一打开html页面就把xml当作数据源加载的话,那么就直接在代码中嵌入以下标签就可以了。

<XML?id="stuData"?src="DsoData.xml"></XML>

可要记住它的id,这个id是可以自定义的,它是在javascript中操作的标示,有点类似与asp.net的服务器控件啊。

3.如果你只想当在html中激发某个事件时才加载xml数据,那么你首先需要在html中放置一个DSO的容器,以便用来存放xml数据。

<object?id="ClassData"?CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39"?
width="0"?height="0"></object>

这里这个id的意义和上面的一样。如果要加载多个xml,那么你就要放置多个这样的标签。

4.那么在javascript中怎么加载呢?

html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??var?xmlDoc;
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??function?loadXml2Dso()
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??{
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据?????xmlDoc?=?ClassData.XMLDocument;
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据?????xmlDoc.load("ClassData.xml");
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据???}
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据
注意这个ClassData.XMLDocument的ClassData实际上是前面放置的标签<object?id="ClassData"?中的id。这和asp.net的服务器控件多么像。

5.怎么把这些数据源中的数据展示到html中呢?

a.绑定到table中,请看下面的代码:

html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<table?width="80%"?datasrc="#stuData"?border="1"?cellspacing="0"?cellpadding="0">
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??<caption>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据????学生数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??</caption>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??<thead>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??<tr>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据????<th?scope="col">姓名</th>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据????<th?scope="col">年龄</th>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据????<th?scope="col">班级</th>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??</tr>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??</thead>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??<tbody>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??<tr>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据????<td><span?datafld="name"></span></td>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据????<td><span?datafld="age"></span></td>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据????<td><span?datafld="class"></span></td>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??</tr>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??</tbody>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</table>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据

这里大家重点关注以下两个标签:
datasrc="#stuData"
datafld="name"

一个是datasrc,它表明该table使用哪个数据源,后面是"#stuData",这个#是一个标示,后面呢则是<XML?id="stuData"?中的id,表明table用的是这个数据源。而datafld表明它绑定的是xml文档中元素名。如果遇到属性名和子元素名一样的情况,在元素名前加上“!”进行区分。


b.除了绑定到table中,还可以绑定到许多标签中,如A、APPLET、BUTTON、DIV、FRAME、IFRAME、?IMG、INPUT?(此处类型是:CHECKBOX、HIDDEN、?LABEL、PASSWORD、RADIO和TEXT)、LABEL、?MARQUEE、SELECT、SPAN、TABLE和?TEXTAREA。?

绑定的方法类似,关键是指定以上两个属性。

6.仅仅是只能绑定,肯定是不够灵活的,而javascript确可以让我们灵活的展现它们。因为DSO是一个类似于recordset的对象,那么它就有:

??????? ·?moveNext():?指向后一个数据项。

????????·?movePrevious():?指向前一个数据项。?

   ·?moveFirst():?指向第一个数据项。?

   ·?moveLast():?指向最后一个数据项。?

   ·?EOF:?这个属性用来检测我们是否已经到达数据记录的底部。

具体的操作代码如下:

???????var?theSet?=?ClassData.recordset;
??????????theSet.moveNext();

那么在html中绑定了数据的非table标签,如单独的span标签,那么就会随着moveNext而变化,在这点上,table就像asp.net中的gridView,而只绑定单值的就是detailView。这时候你一不小心,还以为是和服务器在交互呢。

除此之外,还能使用变量对这个recordset中的值取出,如:

var??theName?=?theSet("name");

当然你也可以通过:

document.getElementById("###").innerHTML=theSet("name");

显示到指定的位置。

还有获取记录集中的个数:
var?count?=?theSet.RecordCount?;

7.还可以对记录集进行快速查询、排序、编辑等操作。还有对这个recordset中的记录进行增加删除修改,也是同样有效的。只是你别期望能修改xml文件,原因就不用我讲了。这些具体操作的办法和asp中的recordset对象都是相似的。

8.对于xml+DSO,其实我们可以把它看作是一个分布式的离线数据库,可以首先一次性从服务器端下载客户端操作所需的xml数据,然后通过DSO进行操作,这中间的业务便不需要与服务器端交互了,而是等都操作完毕了,再可以一次性提交到服务器端。这就有点像.net中的dataset了。不过这个暂时只是我的一个想法,存在的问题肯定也是有的。


附:完整html中的代码

html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<html?xmlns="http://www.w3.org/1999/xhtml">
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<head>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<meta?http-equiv="Content-Type"?content="text/html;?charset=gb2312"?/>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<!--?Author:hongjuesir@gmail.com??Share?happily?!-->
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<title>DSO示例</title>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</head>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<script?language="javascript">
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??var?xmlDoc;
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??function?loadXml2Dso()
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??{
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据?????xmlDoc?=?ClassData.XMLDocument;
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??xmlDoc.load("ClassData.xml");
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据???}
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据???
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据???function?moveDso()
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据???{
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??????var?theSet?=?ClassData.recordset;
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据???theSet.moveNext();
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据???/*·?movePrevious():?指向前一个数据项。?
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据   ·?moveFirst():?指向第一个数据项。?
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据   ·?moveLast():?指向最后一个数据项。?
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据   ·?EOF:?这个属性用来检测我们是否已经到达数据记录的底部。*/?
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据???}??????
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据???
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</script>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<XML?id="stuData"?src="DsoData.xml"></XML>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<object?id="ClassData"?CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39"?
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据width="0"?height="0"></object>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<body>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<table?width="80%"?datasrc="#stuData"?border="1"?cellspacing="0"?cellpadding="0">
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??<caption>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据????学生数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??</caption>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??<thead>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??<tr>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据????<th?scope="col">姓名</th>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据????<th?scope="col">年龄</th>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据????<th?scope="col">班级</th>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??</tr>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??</thead>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??<tbody>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??<tr>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据????<td><span?datafld="name"></span></td>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据????<td><span?datafld="age"></span></td>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据????<td><span?datafld="class"></span></td>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??</tr>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??</tbody>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</table>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<p>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??<label>获取班级xml到Dso并绑定到table
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??<input?type="submit"?name="Submit"?value="获取"?onclick="loadXml2Dso();"?/>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??</label>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</p>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<table?datasrc="#ClassData"?border="1">
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<tr>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<td><input?type="text"?datafld="id"?/></td>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<td><span?datafld="name"></span></td>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</tr>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</table>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<p>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??<label>移动DSO的RecordSet
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??<input?type="submit"?name="Submit"?value="移动"?onclick="moveDso();"?/>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据??</label>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</p>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<div>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<span?datasrc="#ClassData"?datafld="id"?style="margin-right:20px;?background-color:#0099FF"></span>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据<span?datasrc="#ClassData"?datafld="name"?style="background-color:#99CC00"></span>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</div>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</body>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据</html>
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据
html中的数据岛:利用DSO跟javascript在html中动态加载和浏览xml数据

热点排行