资源预览内容
第1页 / 共49页
第2页 / 共49页
第3页 / 共49页
第4页 / 共49页
第5页 / 共49页
第6页 / 共49页
第7页 / 共49页
第8页 / 共49页
第9页 / 共49页
第10页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第8章 使用DSO显示XML文档,8.1 DSO简介,8.1.1 DSO基本概念 与HTML文档绑定的XML数据源对象简称为DSO,通常也称为嵌入HTML文档中的XML数据岛。 使用DSO,借助HTML网页来显示XML文档内容,既能保持XML文档数据与其显示格式分离的特点,又具备HTML网页的丰富显示格式。,利用DSO技术显示XML文档的机制是,把链接到HTML网页中的一个XML文档或一段XML数据当作一个类似于数据库的记录集(Recordset)对象,然后使用与数据库类似的操作方法来显示和浏览被链接的XML文档的内容。 采用DSO技术,首先需要进行数据绑定,即将XML文档数据绑定到HTML文档,然后再将特定的XML元素链接到SPAN或TABLE等标准的HTML元素,这些HTML元素就会自动显示它们所绑定的XML元素内容。,使用DSO技术来显示XML文档数据的两个主要步骤: (1)把要显示的XML文档绑定到一个HTML文档中 。这个步骤是通过在HTML文档中添加一个名为XML的特定元素来实现的。 (2)把XML文档中的元素与HTML文档中特定的元素绑定 。, 三国演义 罗贯中 文艺出版社 0-765-58007-8 80 红楼梦 曹雪芹 三秦出版社 0-765-58007-9 22 ,mingzhu.html, 数据绑定 数据绑定实例 书名 类别 书号 作者 出版社,定价 数量 余量 ,8.1.2 XML文档绑定到HTML网页,被邦定到HTML网页的XML文档数据将成为一个数据源对象,也被称为数据岛。可以使用两种不同的数据岛形式,即:外部数据岛和内部数据岛。,1内部数据岛 内部数据岛是将XML文档的全部内容放在HTML文档中特定的XML元素的起始标记与结束标记之间,并在XML起始标记中给出这个数据岛的ID标识。 2外部数据岛 外部数据岛是在名为XML的HTML元素中仅包含所需绑定的XML文档的URL及其ID标识。,内部数据岛示例:,将mingzhu.xml的内容直接写到mingzhu.html文件当中。,外部数据岛示例:login.xml, 张朝昆 123456 ,Login.html, 登录 用户登录 名称: 密码: ,8.1.3 XML元素绑定到HTML元素,第一种方法是将全部XML元素绑定到HTML文档的TABLE元素 ,使得HTML网页中的表格能够自动显示XML文档的记录集合。此时应在标记中添加DATASRC属性,并将一个自定义的数据源对象名称(数据岛标识符)作为其属性值。 如之前的例子:mingzhu.html,第二种方法是将指定的XML元素绑定到HTML文档的其他特定元素,例如绑定到SPAN、DIV、BUTTON等元素。此时在标记中除了应添加DATASRC属性之外,还应添加DATAFLD属性来指定所绑定的XML文档中的某个字段。采用此种方法一次只能显示一条记录或记录中的一个字段。 并不是所有的HTML元素都可以与XML元素绑定。,8.2 使用DSO显示记录,8.2.1 使用DSO显示单一记录 若将XML文档绑定到HTML网页文档之后,再使用SPAN、DIV、BUTTON 等HTML元素绑定到个别的XML字段,结果这些HTML元素就会自动显示所绑定的XML字段的内容。使用这种方法来显示所绑定的XML文档时,通常一次只能显示一条记录,所以被绑定的XML文档都相当简单。,未绑定table的效果,仍使用mingzhu.xml, DSO单值绑定 四大名著 ,效果:,8.2.2 使用简单表格显示XML记录,将XML文档作为数据源对象并绑定到HTML文档的TABLE元素之后,XML文档中的每一个记录的数据都会被分别显示在HTML网页的不同表格行中,而XML记录元素中的每一个字段数据则会被分别显示于不同的表格栏中。 示例参见mingzhu.html,8.2.3 使用DSO显示元素属性,对于XML文档中含有属性的记录元素,在使用DSO方式进行处理时,只需将该元素的属性作为记录的一个特定字段来处理即可。因此就可以利用普通的数据绑定技巧来存取元素属性的值。,8.3 DSO数据源对象,将XML文档与HTML文档绑定之后,在内存中生成的记录集合是一个属于DSO的recordset对象。该对象提供了一组符合Microsoft 的ADO标准数据访问技术的方法和属性,因而可以通过script编程调用这些方法和属性来对记录集进行访问和处理。 可以根据需要调用recordset对象的任何一个方法来撰写有关的script程序。调用这些方法最简单的方式就是在HTML文档中通过将某个方法直接指定到BUTTON元素的ONCLICK属性中。,8.3.1 DSO与javascript的使用, 张三 同学 031112345678 李四 朋友 031187654321 ,contacts.html, 通信录 function view() alert(dso.xml); 名称 联系方式 , ,8.3.2 操作DSO记录:tushu.xml, XML基础教程与实验指导 孙晓非 38 XML入门经典 David Hunter 118 XML高级编程 Bill Evjen 98 XML案例解析教程 Mitch Amiano 36 XML开发典型应用 张朝明 65 ,tushu.html, 图书列表 function view() alert(dso.documentElement.nodeName); function viewFirst() alert(dso.documentElement.childNodes0.childNodes0.nodeName); alert(dso.documentElement.childNodes0.childNodes0.firstChild.nodeValue); ,function add() var nodeBook = dso.createElement(图书); var nodeTitle = dso.createElement(标题); nodeTitle.appendChild(dso.createTextNode(XML基础教程); var nodeAuthor = dso.createElement(作者); nodeAuthor.appendChild(dso.createTextNode(耿祥义); var nodePrice = dso.createElement(价格); nodePrice.appendChild(dso.createTextNode(21); nodeBook.appendChild(nodeTitle); nodeBook.appendChild(nodeAuthor); nodeBook.appendChild(nodePrice); dso.documentElement.appendChild(nodeBook); function del() dso.documentElement.removeChild(dso.documentElement.childNodes0); function modi() dso.documentElement.childNodes0.childNodes0.firstChild.text=新图书名称; , 图书标题 图书作者 图书价格 ,效果:,8.3.3 遍历XML数据岛数据, 图书遍历 function firstrec() dso.recordset.moveFirst(); function nxtrec() if(!dso.recordset.EOF) dso.recordset.moveNext(); if(dso.recordset.EOF) dso.recordset.movelast(); ,function prevrec() if(!dso.recordset.BOF) dso.recordset.movePrevious(); if(dso.recordset.BOF) dso.recordset.moveFirst(); function lastrec() dso.recordset.movelast(); , 图书信息 图书标题: 图书作者: 图书价格: 第一条记录 上一条记录 下一条记录 最后一条记录 ,效果:,8.3.4 分页显示DSO数据,要实现被绑定的XML文档中的众多记录用分页的表格来显示,需执行下列步骤: (1)将被绑定的TABLE 元素的DATAPAGESIZE 属性设定成希望每一页显示的记录个数。 (2)为被绑定的TABLE 元素的ID 属性指定一个唯一的识别代号。 (3)要实现在各个表格页之间翻页浏览,可使用脚本程序调用DSO提供的用于控制分页显示的方法。, 图书列表 function ViewBooks() books.dataPageSize = items.value; books.firstPage(); function FirstPage() books.firstPage(); function PrevPage() books.previousPage(); function NextPage() books.nextPage(); function LastPage() books.lastPage(); , 分页显示数据 请输入一页中要查看的记录数: 图书标题 图书作者 图书价格 ,效果:,8.4 DSO与xsl,goods.xml: 联想笔记本电脑 4999元 TCL液晶电视 5682元 海尔洗衣机 2866元 ,goods1.xslt, 样式1 ,goods2.xslt, 样式2 物品名称 物品价格 ,goods3.xslt, 样式3 (商品行情:涨价) (商品行情:降价) ,goods.html, 样式切换 function load1() var xmlDso = dso.XMLDocument; var xslDso = Stylesheet1.XMLDocument; divResults.innerHTML = xmlDso.transformNode(xslDso); function load2() var xmlDso = dso.XMLDocument; var xslDso = Stylesheet2.XMLDocument; divResults.innerHTML = xmlDso.transformNode(xslDso); function load3() var xmlDso = dso.XMLDocument; var xslDso = Stylesheet3.XMLDocument; divResults.innerHTML = xmlDso.transformNode(xslDso); ,,, ,效果样式1,效果样式2,效果样式3,8.5 使用DSO显示图像元素,使用DSO技术,还可以把XML文档元素绑定到除TABLE和SPAN之外的其他HTML元素,以实现特定XML数据的显示功能。这些HTML元素包括DIV、BUTTON、IMG等。 如果将XML文档的图像元素绑定到HTML的IMG元素,即可方便地实现在网页中显示出对应的图像。,img.xml (部分程序), img/1.jpg 动物 ,img.html (部分程序), 第一张图片 上一张图片 下一张图片 最后一张图片 ,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号