热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

XML第四篇:快速表列資料-資料繫結[转载]

XML第四篇:快速表列資料-資料繫結
XML第四篇:快速表列資料-資料繫結
恆逸資訊教育訓練中心首頁

作者: 恆逸資訊 許嘉仁

快速表列資料-資料繫結
在上一期的文章中我們介紹了使用ADO從資料庫取出資料轉換成為XML,並利用XSL技術將之展現在網頁上。漸漸地整合各種XML應用技術,在這一期將介紹透過資料繫結技術,輕鬆快速地表列資料。
談到資料繫結,它到底有什麼好處呢?首先第一點它使用上直覺、簡單,第二點它不需撰寫大量的程式即可達到資料展現的目的,第三點它維護輕鬆、容易修改,主要是因為資料與展現的HTML標籤分離。接下來就這三點來討論資料繫結如何應用吧!

資料繫結

首先如果要使用資料繫結技術來展現資料,必須要在網頁中建立XML的資料來源物件(Data Source Object),文中簡稱DSO,建立DSO的方式有兩種,第一種是使用Java Applet連結到一份Books.xml檔案資料,範例如下:





JavaApplet.htm
第二種方式是建立XML DataIsland(XML資料島),範例如下:





XMLDataIsland1.htm
或者直接將XML資料崁入DataIsland中,範例如下:






72-80081-082
New Moon Books
9.95
Details.asp?isbn=72-80081-082

Charlotte M. Cooper
Shelley B. Burke
Regina P. Murphy






XMLDataIsland2.htm
這兩種方式都能建立DSO,不過第二種方式,也就是XML DataIsland的語法只有在IE5以後的版本才有支援,在這邊預設讀者都有IE5可以測試。建立好DSO,先看一下DSO裡面的資料,也就是連結到的XML檔案Books.xml,如下列檔案內容:





72-80081-082
New Moon Books
9.95

Details.asp?isbn=72-80081-082

Charlotte M. Cooper
Shelley B. Burke
Regina P. Murphy



72-80081-024
New Moon Books
14.99
Details.asp?isbn=72-80081-024

Charlotte M. Cooper
Yoshi Nagase



9-001-122-12
Binnet and Hardley
19.95
Details.asp?isbn=9-001-122-12

Mayumi Ohno



9-001-122-90
Binnet and Hardley
11.95
Details.asp?isbn=9-001-122-90

Mayumi Ohno
Ian H. Devling
Peter Wilson II
Lars Peterson



9-001-122-01
Binnet and Hardley
19.99
Details.asp?isbn=9-001-122-01

Lars Peterson

XML檔案中包含五本書,每本書都有一個以上的作者。接下來要如何讓HTML標籤來展現資料呢?其實很簡單,例如下面的範例,僅僅在標籤內加上兩個屬性設定(datasrc與datafld),第一筆資料就能夠繫結在標籤內了:




書號: datasrc="#xmldso" datafld="isbn" >
書名:
出版商:
  datasrc="#xmldso" datafld="publisher" >
價格: datasrc="#xmldso" datafld="price" >

DataIsland3.htm 結果圖如下: 原來datasrc屬性就是指定DSO,而datafld就是指定欄位,並且個別用不同的標籤來展現,讀者就會發現資料繫結的彈性以及方便了。例如價格欄位資料會繫結到TextBox的Value屬性,所以結果可以看到資料便展現在TextBox裡面。 但是有一點必須要注意,並不是所有的HTML標籤都支援這兩個屬性,在以下的表格中列出支援的HTML標籤以及資料繫結後所對應的標籤屬性:
HTML標籤 資料繫結標籤屬性
A href
APPLET property value via PARAM
BUTTON innerText, innerHTML
DIV innerText, innerHTML
FRAME src
IFRAME src
IMG src
INPUT TYPE=BUTTON innerText, innerHTML
INPUT TYPE=CHECKBOX checked
INPUT TYPE=HIDDEN value
INPUT TYPE=PASSWORD value
INPUT TYPE=RADIO checked
INPUT TYPE=TEXT value
LABEL innerText, innerHTML
LEGEND innerText, innerHTML
MARQUEE innerText, innerHTML
SELECT obj.options(obj.selectedIndex).text
SPAN innerText, innerHTML
TEXTAREA value
如上表span標籤在設定完datasrc及dtafld之後,資料會存放在標籤的innerText或innerHTML屬性中,這代表資料能夠以TEXT純文字展現或以HTML展現。資料繫結之後預設使以純文字展現,也就是存放在innerText屬性,例如改寫Books.xml的第一筆資料的isbn欄位如下:


  < B < 72-80081-082 < /B < ;
New Moon Books
9.95
Details.asp?isbn=72-80081-082

Charlotte M. Cooper
Shelley B. Burke
Regina P. Murphy
其中「<」代表「<」符號,「&glt;」代表「 >」符號,主要是因為XML資料中大於和小於符號是保留字,所以必須以其他方式表現,此時再度執行DataIsland3.htm會得到以下結果: 但是這不是想要的結果,主要的目的是希望書號欄位資料以粗體展現,此時必須配合另一個HTML屬性,也就是修改DataIsland3.htm的span標籤,再加上一個屬性dataformatas設定為HTML。此時資料繫結後,資料便會存放在span標籤的innerHTML屬性,也就是以HTML方式展現,如下程式碼及結果:
書號: dataformatas="HTML" >

瀏覽資料

到目前為止,雖然資料繫結很方便看到所需的資料,但是都只能看到第一筆,所以應該要有瀏覽的機制,也就是加上可以切換上下筆的功能。首先在頁面上放進四顆按鈕並給定按鈕文字內容,然後加上被點選後所執行的程式如下:










書號:

書名:

出版商:

價格:


 




DataIsland3.htm
上面的程式中會將XML資料模擬成RecordSet,此時就可以透過RecordSet的Method來瀏覽資料。不過如果想要同時瀏覽多筆資料又該如何?這時可以使用Table標籤來做資料繫結,如以下方式:















書號書名價格作者



結果如下:
但是由於每一筆資料有多個作者欄位資料,所以資料繫結的方式必須稍作修改,以槽狀結構來繫結資料:








書號書名價格作者
 



結果如下:
既然能夠瀏覽多筆資料,最好能加上換頁功能,而做法只要再配合兩個屬性-Table標籤的id及datapagesize屬性,以及簡短的程式就可以達成,範例如下:

















id=Table1 datapagesize=2 >
書號書名價格作者









DataIsland4.htm
結果如下:

資料繫結小技巧

對於資料繫結也有許多小技巧,例如提供超連結、跑馬燈的效果或者TextBox繫結提供編修資料的功能,範例如下:















書號書名價格出版商作者
 
  <
 
 




   




DataIsland4.htm
結果如下:

結 論

看過了以上幾個範例,讀者會真正了解本文第一段所談到資料繫結的好處,使用上極為簡單易用。不過應用方式及小技巧不少,如果能妥善運用,對於資料的展現以及維護都會比使用ASP和HTML標籤混雜的程式容易許多。
雖然展現快速容易,但是仍然有不足的地方,也就是彈性較小。如果想要做到更複雜的功能則就很困難,例如想要根據欄位內容來做排序,這就要另外結合XSL技術或ASP技術重新查詢資料庫。如果不需要複雜的功能,上面的這些範例就能夠解決掉大部分只需簡單展現的頁面。
在下一期的文章中會再結合XML的魔法師XML DOM(XML Document Object Model),完全整合這四期文章的技術,讓XML充滿無限的變化。

推荐阅读
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Python语法上的区别及注意事项
    本文介绍了Python2x和Python3x在语法上的区别,包括print语句的变化、除法运算结果的不同、raw_input函数的替代、class写法的变化等。同时还介绍了Python脚本的解释程序的指定方法,以及在不同版本的Python中如何执行脚本。对于想要学习Python的人来说,本文提供了一些注意事项和技巧。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • asp中如何嵌入python的简单介绍
    本文目录一览:1、如何在IIS中执行Python脚本 ... [详细]
  • asp.net(vb脚本)如何获取xml的节点值?xmlversion1.0encodingutf-8?rootimageimagemenusmenuurl#frame_paren ... [详细]
  • PHP编程能开发哪些应用?
    导读:很多朋友问到关于PHP编程能开发哪些应用的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览: ... [详细]
author-avatar
大姑氵娘祖茉茉_749
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有