xml创建可排序、分页数据显示页面_xml技巧.docVIP

  • 3
  • 0
  • 约1.6万字
  • 约 10页
  • 2017-08-23 发布于河南
  • 举报

xml创建可排序、分页数据显示页面_xml技巧.doc

xml创建可排序、分页数据显示页面_xml技巧

在Web研发中,我们经常会遇见分页显示和排序数据记录集的情况,这在服务器端使用服务器端的代码和数据库技术是件非常轻松的事情,比如:ASP、PHP、JSP等。然而,如果要在客户端显示多条记录并且排序是一件非常令人头疼的事情。下面,我们利用Extensible?Markup?Language(XML,可扩展标记语言)和Extensible?Stylesheet?Language?Transformations(XSLT,可扩展样式单语言转换),并结合XML?Path?Language(XPath,XML路径语言),只需要编写简单的代码,就可轻松实现。这种方法避免了和服务器频繁打交道的过程,节省了数据显示的时间,浏览者无须等待就能看到结果,也能减少服务器的负担。另外。由于XML和XSLT技术,使数据存储和数据显示分离,还能让我们的代码能够重复利用,大大减轻了程式员编写代码的负担。? ???下面,我们一步一步地来实现我们的功能。? ??? ???首先:创建XSLT? ??? ???XSLT样式单的第一行标明该XML所遵照的XML规范版本,然后是标明该样式单使用的名称空间,这里,我们以XSL规范的正式版本来进行编写,而不采用XSL的草案的写法:? ???XSL:STYLESHEETNBSP;XMLNS:XSL=HTTP: WD-xsl? TR ? ???注意:两者在功能和写法上有非常大的差异。? ????xml?version=1.0?? ???XSL:STYLESHEETNBSP;XMLNS:XSL=HTTP: Transform? XSL 1999? ???接下来,我们定义XSLT里的模板标记:? ??? ???XSL:TEMPLATENBSP;MATCH= ?? ???XSL:APPLY-TEMPLATESNBSP;SELECT= 客户关系表? /? ???? ??? ???XSL:TEMPLATENBSP;MATCH= 客户关系表?? ??? ???我们把要显示的样式写到模板里面。我们使用HTML的数据岛来存放我们的数据,这些数据能利用SQL?Server?2000的XML查询来得到,对于不支持XML的数据库,我们能自己编写组件把数据转换成XML格式,然后在放到数据岛里。在HTML里使用数据岛有两种方法:? ???一是直接嵌入数据,如下所示:? ???XMLNBSP;ID=DATA? ???客户关系表? ???客户每条数据? ???? ???? ???二是通过SRC属性引用外部文件,如下所示:? ???XMLNBSP;ID=DATANBSP;SRC=DATA.XML? ???要使用数据岛里的数据,必须通过id名来引用他,当然,由于XSLT文件也是XML格式文件的一种,也能通过这种方法来实现:? ???XMLNBSP;ID=STYLENBSP;SRC=STYLE.XSL? ???我们在页面中加入标记DIV来显示我们的转换的结果:? ???DIVNBSP;ID=DISPLAYAREA? ???使用XSLT转换数据岛里的数据,采用DOMDocument的transNode()方法,并把结果通过DIV的innerHTML属性来展现出来:? ???DisplayArea.innerHTML?=?Data.transformNode(Style.DocumentElement)? ??? ???第二步:实现客户端排序的功能? ??? ???我们先设定一个默认的排序字段,这里选择“序号”作为默认的排序关键字,并且是按递增的顺序排列,在XSLT里加入sort标记:? ???XSL:FOR-EACHNBSP;SELECT=客户? ???XSL:SORTNBSP;SELECT=序号NBSP;ORDER=DESCENDINGNBSP;DATA-TYPE=NUMBER /? ???? ???接下来,我们为样式表增加排序的功能,以便能响应用户的操作,我们在表头的每个列上添加onClick事件,该事件调用sort()函数,允许用户通过单击该表头来进行对该列的排序。? ???TDNBSP;ONCLICK=SORT(序号)序号? ???Sort()函数的语句如下所示:? ???Function?Sort(strField)? ??? ???Dim?sortField? ???Dim?sortOrderAttribute? ??? ??? 得到原来排序字段的属性值? ???Set?sortField?=?Style.XMLDocument.selectSingleNode(//xsl:sort/@select)? ??? ??? 得到原来排序的顺序属性值?

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档