1 / 38

第6章 DSO

第6章 DSO. 6.1 DSO 简介 6.2 使用 DSO 显示记录 6.3 使用 DSO 显示属性 6.4 使用 DSO 显示图像元素 6.5 DSO 与 VBScript. 6.1 DSO 简介. DSO : Data Source Object, 数据源对象 Data Island : 数据岛 原理: 将 XML 文档数据当成类似数据库的记录集,然后用操作数据库的方法来显示 XML 文档。 要求: XML 文档每个元素有相同的结构,子元素数目、类型必须完全相同。. 6.1 DSO 简介. 使用 DSO 步骤:

amber
Télécharger la présentation

第6章 DSO

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第6章 DSO 6.1 DSO简介 6.2 使用DSO显示记录 6.3 使用DSO显示属性 6.4 使用DSO显示图像元素 6.5 DSO与VBScript

  2. 6.1 DSO简介 • DSO:Data Source Object,数据源对象 • Data Island: 数据岛 • 原理:将XML文档数据当成类似数据库的记录集,然后用操作数据库的方法来显示XML文档。 • 要求:XML文档每个元素有相同的结构,子元素数目、类型必须完全相同。

  3. 6.1 DSO简介 • 使用DSO步骤: • 文档绑定:将XML文档绑定到HTML文档。 • 元素链接:将XML元素链接到HTML元素,比如span或table等 • 显示:通过显示html元素自动显示XML元素

  4. 6.1.1 文档绑定 • 内部数据岛:在HTML文档中直接包含XML文档内容。 <XML ID="数据岛名"> … XML文档放在此处 </XML> • 外部数据岛:在HTML文档中包含XML文件名。XML文档中的CSS或XSL不起作用。 <XML ID="数据岛名" SRC="XML文档名"> </XML>

  5. 6.1.2 元素链接 • 与Table链接显示多条记录: <TABLE DATASRC="#数据岛名"> </TABLE> • 与SPAN链接显示单一记录: <SPAN DATASRC="#数据岛名",DATAFLD="元素名"> </SPAN > • 与DIV、BUTTON链接:可绑定的HTML元素见p156表6-1。

  6. 6.2 使用DSO显示记录 • 例1:显示单一记录,student.htm。 • 步骤1:外部数据岛选择students.xml,名字取作students, <XML ID="students" SRC="students.xml"> </XML> • 步骤2:与SPAN链接显示单一记录, <SPAN DATASRC="#students" DATAFLD="元素名"> </SPAN >

  7. 6.2 使用DSO显示记录 • 例1:显示单一记录,student.htm <html><body> <XML ID="students" SRC="students.xml"></XML> <span datasrc="#students" datafld="name"></span><br> <span datasrc="#students" datafld="origin"></span> <br> <span datasrc="#students" datafld="age"></span> <br> <span datasrc="#students" datafld="telephone"> </span> </body></html>

  8. 6.2 使用DSO显示记录 • 例1运行效果:双击student.htm

  9. 6.2 使用DSO显示记录 • 例2:显示多条记录,students.htm • 步骤1:外部数据岛选择students.xml,名字取作students, <XML ID="students" SRC="students.xml"> </XML> • 步骤2:与Table链接显示多条记录, <TABLE DATASRC="#students" border=1> • 步骤3:每条记录用span显示,其中的datasrc可以省略。 <SPAN DATASRC="#students" DATAFLD="元素名"> </SPAN >

  10. 6.2 使用DSO显示记录 • 例2:显示多条记录,students.htm <html><body> <XML ID="students" SRC=students.xml></XML> <TABLE DATASRC="#students" border=1> <CAPTION>学生花名册</CAPTION> <THEAD><TH>姓名</TH><TH>籍贯</TH> <TH>年龄</TH><TH>电话</TH></THEAD> <TR><TD><span datafld="name"></span></TD> <TD><span datafld="origin"></span> </TD> <TD><span datafld="age"> </span></TD> <TD><span datafld="telephone"></span></TD> </TR></TABLE></body></html>

  11. 6.2 使用DSO显示记录 • 例2运行效果:双击students.htm

  12. 6.2 使用DSO显示记录 • 例3:分页显示多条记录,student_pages.htm • 步骤1:外部数据岛选择students.xml,名字取作students, <XML ID="students" SRC="students.xml"> </XML> • 步骤2:与Table链接显示多条记录,Table要取一个名字StudentTable,指定每页记录数datapagesize="2" <TABLE ID="StudentTable " border=1 DATASRC="#students" datapagesize="2">

  13. 6.2 使用DSO显示记录 • 步骤3:每条记录用span显示,其中的datasrc可以省略。 <SPAN DATASRC="#students" DATAFLD="元素名"> </SPAN > • 步骤4:使用HTML的button控件,配合VBScript调用DSO的分页方法。

  14. 6.2 使用DSO显示记录 • 例3:分页显示多条记录,student_pages.htm <html><head> <script language=VBScript> Sub a StudentTable.firstpage() End Sub Sub b StudentTable.previouspage() End Sub Sub c StudentTable.nextpage() End Sub

  15. 6.2 使用DSO显示记录 • 例3续1:分页显示多条记录,student_pages.htm Sub d StudentTable.lastpage() End Sub </script></head><body> <XML ID="students" SRC=students.xml> </XML> <input type=button value="第一页" onclick=a> <input type=button value="前一页" onclick=b> <input type=button value="后一页" onclick=c> <input type=button value="最后一页" onclick=d> <br><br>

  16. 6.2 使用DSO显示记录 • 例3续2:分页显示多条记录,student_pages.htm <TABLE ID="StudentTable" DATASRC="#students" border=1 datapagesize="2"> <CAPTION>学生花名册</CAPTION> <THEAD> <TH>姓名</TH> <TH>籍贯</TH> <TH>年龄</TH> <TH>电话</TH> </THEAD>

  17. 6.2 使用DSO显示记录 • 例3续3:分页显示多条记录,student_pages.htm <TR> <TD><span datafld="name"></span></TD> <TD><span datafld="origin"><span></TD> <TD><span datafld="age"></span></TD> <TD><span datafld="telephone"></span></TD> </TR> </TABLE> </body></html>

  18. 6.2 使用DSO显示记录 • 例3运行效果:双击student_pages.htm

  19. 6.3 使用DSO显示元素属性 • 记录级元素属性:当作子元素处理,如在例1的student.htm中加上绿色一句,则读取属性class的值。本章前面的例子都没有显示class <html><body> <XML ID="students" SRC="students.xml"></XML> <span datasrc="#students" datafld="class"></span> <span datasrc="#students" datafld="name"></span> <span datasrc="#students" datafld="origin"></span> <span datasrc="#students" datafld="age"></span> <span datasrc="#students" datafld="telephone"> </span></body></html>

  20. 6.3 使用DSO显示元素属性 • 运行效果:双击student.htm,增加了班级

  21. 6.3 使用DSO显示元素属性 • 子元素字段属性: DSO处理时,将属性变成子元素,并增加子元素<$TEXT> </$TEXT>包含原来的内容 • 例子:修改students.xml,在<name>中增加属性sex:见文档students_sex.xml <name sex="女">李华</name> • DSO处理成: <name><sex>女</sex> <$TEXT>李华</$TEXT> </name>

  22. 6.3 使用DSO显示元素属性 • 使用嵌套table显示:student_sex.htm <html><body> <XML ID="students" SRC="students_sex.xml"> </XML> <span datasrc="#students" datafld="class"></span><br> <table datasrc="#students" datafld="name"> <tr><td><span datafld="$TEXT"></span></td> <td><span datafld="sex"></span></td></tr> </table> <span datasrc="#students" datafld="origin"></span> <br> <span datasrc="#students" datafld="age"></span> <br> <span datasrc="#students" datafld="telephone"> </span> </body></html>

  23. 6.3 使用DSO显示元素属性 • 运行效果:双击student_sex.htm,增加了性别

  24. 6.4 使用DSO显示图像元素 • 使用HTML的<img>标记:假定在students.xml中增加了元素 <picture>图片文件名</picture> 则在student.htm中增加语句如下 <img datasrc="#students" datafld="picture">

  25. 6.5 DSO与JavaScript/VBScript • 数据岛的recordset对象:包含数据岛XML文档所有的记录,可在JavaScript/VBScript中直接使用. • 数据岛的recordset对象的属性:BOF、EOF、value 数据岛.recordset.属性名 数据岛.recordset("子元素名").value • 数据岛的recordset对象的方法:moveFirst()、 movePrevious()、 moveNest() 、moveLast()、 move(±n)、addNew()、Delete() (注意大写D) 数据岛.recordset.方法名()

  26. 6.5 DSO与JavaScript/VBScript • Recordset对象的属性 • AbsolutePage:返回当前记录所在页面 • absolutePosition:返回当前记录的位置 • BOF:如果当前记录位置位于第一条记录之前,则返回true • cacheSize:返回本地缓存的记录数 • EOF:如果当前位置位于最后一条记录之后,则返回true • maxRecords:指定查询返回的最大记录 • pageSize:指定页面可以包含的记录数 • pageCount:返回记录集包含的数据页数 • recordCount:返回记录集中的记录数

  27. 6.5 DSO与JavaScript/VBScript • Recordset对象的方法 • addNew( )在记录集中添加一条记录 • Delete( )删除当前记录 • getRows( )读取记录并将其存储于数组中 • Move(n) 移动当前记录的位置 • moveFirst( )移动到第一条记录 • moveLast( )移动到最后一条记录 • movePrevious( )移动到上一条记录 • moveNext( )移动到下一条记录

  28. 6.5.1 使用DSO浏览XML文档 • 浏览students.xml:students_browse.htm <html><head> <script language=VBScript> Sub a students.recordset.moveFirst() End Sub Sub b students.recordset.movePrevious() If students.recordset.bof Then students.recordset.moveFirst() End If End Sub

  29. 6.5.1 使用DSO浏览XML文档 • 浏览students.xml续1:students_browse.htm Sub c students.recordset.moveNext() If students.recordset.eof Then students.recordset.moveLast() End If End Sub Sub d students.recordset.moveLast() End Sub </script></head>

  30. 6.5.1 使用DSO浏览XML文档 • 浏览students.xml续2:students_browse.htm <body> <XML ID="students" SRC=students.xml></XML> <span datasrc="#students" datafld="name"></span><br> <span datasrc="#students" datafld="origin"></span><br> <span datasrc="#students" datafld="age"></span><br> <span datasrc="#students" datafld="telephone"></span><br> <input type=button value="第一个" onclick=a> <input type=button value="前一个" onclick=b> <input type=button value="后一个" onclick=c> <input type=button value="最后一个" onclick=d> </body></html>

  31. 6.5.1 使用DSO浏览XML文档 • 运行效果:双击student_browse.htm,

  32. 6.5.2 使用DSO编辑查询XML文档 • 编辑浏览students.xml:students_browse_edit.htm <html><head><script language=VBScript> Sub a students.recordset.moveFirst() End Sub Sub b students.recordset.movePrevious() If students.recordset.bof Then students.recordset.moveFirst() End If End Sub

  33. 6.5.2 使用DSO编辑查询XML文档 • 编辑浏览students.xml续1:students_browse_edit.htm Sub c students.recordset.moveNext() If students.recordset.eof Then students.recordset.moveLast() End If End Sub Sub d students.recordset.moveLast() End Sub

  34. 6.5.2 使用DSO编辑查询XML文档 • 编辑浏览students.xml续2:students_browse_edit.htm Sub e students.recordset.addNew() students.recordset.movePrevious() End Sub Sub f students.recordset.Delete() End Sub

  35. 6.5.2 使用DSO编辑查询XML文档 • 编辑浏览students.xml续2:students_browse_edit.htm Sub g students.recordset.moveFirst() Do While Not students.recordset.EOF If find.value=students.recordset("name").value Then Exit Do End If students.recordset.moveNext() Loop End Sub </script></head>

  36. 6.5.2 使用DSO编辑查询XML文档 • 编辑浏览students.xml续3:students_browse_edit.htm <body> <XML ID="students" SRC=students.xml></XML> <input type=text datasrc="#students" datafld="name"><br> <input type=text datasrc="#students" datafld="origin"><br> <input type=text datasrc="#students" datafld="age"><br> <input type=text datasrc="#students" datafld="telephone"><br> <br>

  37. 6.5.2 使用DSO编辑查询XML文档 • 编辑浏览students.xml续4:students_browse_edit.htm <input type=button value="第一个" onclick=a> <input type=button value="前一个" onclick=b> <input type=button value="后一个" onclick=c> <input type=button value="最后一个" onclick=d> <br> <input type=button value="添加" onclick=e> <input type=button value="删除" onclick=f> <br><input type=text name=find><br> <input type=button value="查询姓名" onclick=g> </body></html>

  38. 6.5.2 使用DSO编辑查询XML文档 • 运行效果:双击student_browse_edit.htm,注意结果在内存中,XML文档未改变。

More Related