xml数据岛的使用

本文介绍IE5.0如何通过DSO技术处理XML数据岛,并演示了一个具体的HTML页面实例,展示了如何利用XML数据岛进行数据展示及简单交互。

IE中数据岛的处理方式
为了能够处理这种内嵌XML代码的HTML页面,Internet Explorer 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标签嵌入其中,这就和真正的数据岛方案还有一定的差距。微软在Internet Explorer 5.0(以下简称IE 5.0)中对DSO技术进行了扩展,突破了以往的限制,使HTML和XML真正地融合到了一起。HTML页面中支持直接使用<XML>标签。 

在IE 5.0所实现的DSO技术中,如果数据是通过SQL语言对数据库进行查询得到的结果,那么就把它们存放在ADO(ActiveX Data Objects)记录集中。服务器把这种ActiveX控件(通常是ADO记录集)发送到客户端,由客户端脚本程序做进一步的处理。实际上,IE 5.0就是把XML数据岛作为一种特殊的ADO记录集进行处理的。

xml文件:users.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<users>
<user id="1">
 <name>张三</name>
 <age>24</age>
 <sex>男</sex>
</user>
<user id="2">
    <name>李四</name>
    <age>27</age>
    <sex>女</sex>
</user>
<user id="3">
    <name>王五</name>
    <age>32</age>
    <sex>女</sex>
</user>
</users>

 

html文件:xml.html

 

<html>
<head>
</head>
    <script type="text/javascript">
   
    function Previous()
    {
        if(!myUser.recordset.EOF)
        {
             myUser.recordset.MovePrevious();
             if(myUser.recordset.BOF)
             {
                myUser.recordset.MoveFirst();  
             }
        }
    }
    function Next()
    {
        if(!myUser.recordset.BOF)
        {
            myUser.recordset.moveNext();
            if(myUser.recordset.EOF)
            {
                myUser.recordset.moveLast();  
            }
        }
    }
    </script>
<body>
<xml src="users.xml" id="myUser">
    </xml>
<table>
        <tr>
            <td>
                ID</td>
            <td>
                <input type="text" id="id" datasrc="#myUser" datafld="id" />
            </td>
        </tr>
        <tr>
            <td>
                姓名
            </td>
            <td>
                <input type="text" id="txtName" datasrc="#myUser" datafld="name" />
            </td>
        </tr>
        <tr>
            <td>
                性别
            </td>
            <td>
                <input type="text" id="txtSex" datasrc="#myUser" datafld="sex" />
            </td>
        </tr>
        <tr>
            <td>
                年龄
            </td>
            <td>
                <input type="text" id="txtAge" datasrc="#myUser" datafld="age" />
            </td>
        </tr>
        <tr>
            <td colspan="2">
                <input type="button" id="p" onclick="Previous()" value="前一条" />
                <input type="button" id="next" onclick="Next()" value="后一条" />
            </td>
        </tr>
    </table>
</body>
</html>

这里在注意的是:不管是xml文件还是html文件用记事本建立的话,一定要保存格式为utf-8,否则效果出不来!

还有一点就是不能让table绑定数据源.否则将会把所有数据一次显示出来.但这样可以在table元素中加上另外一个属性

datapagesize来控制当前面页中显示记录的条数.前一种类似fromview样式.而后一种则更像gridview.

在这里还可以加一个新按钮实现增加一条新记录的功能.

<input id="Add" TYPE=button value="添加新记录" onclick="theXMLisland.recordset.addNew()"> 

但这里还要注意的是:点击新建记录后,你新建的记录在你选择上一条,下一条时会显示出来,但不会增加到数据源的XML中。你在刷新当前页面或者重新加载后刚才新增的记录则会丢失.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值