用XML创建可排序、分页的数据显示页面
来源:孟宪会之精彩世界 发布时间:2008-04-22 18:25:00
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:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
注意:两者在功能和写法上有很大的差异。
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
接下来,我们定义XSLT里的模板标记:
<xsl:template match="/">
<xsl:apply-templates select="/客户关系表"/>
</xsl:template>
<xsl:template match="/客户关系表"></xsl:template>
我们把要显示的样式写到模板里面。我们使用HTML的数据岛来存放我们的数据,这些数据可以利用SQL Server 2000的XML查询来得到,对于不支持XML的数据库,我们可以自己编写组件把数据转换成XML格式,然后在放到数据岛里。在HTML里使用数据岛有两种方法:
一是直接嵌入数据,如下所示:
<XML id=‘Data‘>
<客户关系表>
<客户>每条数据</客户>
</客户关系表>
</XML>
二是通过SRC属性引用外部文件,如下所示
<XML id=‘Data‘ src=‘Data.xml‘></XML>
要使用数据岛里的数据,必须通过id名来引用它,当然,由于XSLT文件也是XML格式文件的一种,也可以通过这种方法来实现:
<XML id=‘Style‘ src=‘Style.xsl‘></XML>
我们在页面中加入标记DIV来显示我们的转换的结果:
<div id="DisplayArea"></div>
使用XSLT转换数据岛里的数据,采用DOMDocument的transNode()方法,并把结果通过DIV的innerHTML属性来展现出来:
DisplayArea.innerHTML = Data.transformNode(Style.DocumentElement)
猜你喜欢
- 代码如下:import matplotlib.pyplot as pltx = [1,2,3,4,5,6,7,8]y = [5,2,4,2,
- 前言其实有一个模块也支持执行系统命令,那个模块就是sys.system,但他执行系统命令会直接通过主进程去执行命令,那假如,该命令的执行需要
- 在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数。万能的python就自带了argprase包 使
- array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副
- 1.创建主键语法 ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名)
- Win8.1下安装Python3.6提示0x80240017错误,如何解决?定位原因缺少Windows补丁KB2999226解决方法到Mic
- 本文主要研究的是tornado 多进程模式的相关内容,具体如下。官方文档的helloworld实例中的启动方法:if __name__ ==
- 本文实例讲述了Go语言导出内容到Excel的方法。分享给大家供大家参考。具体实现方法如下:package main &
- 这题的官方难度是Medium,点赞1296,反对505,通过率35.4%。从各项指标来说看起来有些中规中矩,实际上也的确如此。这道题的解法和
- // NewTimer creates a new Timer that will send// the current time on i
- 引言GO虽然不消耗大量内存,但是仍有一些小技巧可以节省内存,良好的编码习惯是每一个程序员都应该具备的素质。预先分配切片数组是具有连续内存的相
- <html> <head> <title> New Document </title> &l
- 实例1、取得MYSQL的版本在windows环境下安装mysql模块用于python开发MySQL-python Windows下EXE安装
- 如下所示://定义编码 header( 'Content-Type:text/html;charset=utf-8
- 本文实例为大家分享了python openCV实现摄像头获取人脸图片的具体代码,供大家参考,具体内容如下在机器学习中,训练模型需要大量图片,
- 本文实例讲述了Python实现的爬取百度贴吧图片功能。分享给大家供大家参考,具体如下:#coding:utf-8import request
- 简介在生产环境上,为了避免数据的丢失,通常情况下都会定时的对数据库进行备份。而Linux的crontab指令则可以帮助我们实现对数据库定时进
- jQuery是最近比较火的一个JavaScript库,从del.icio.us/上相关的收藏可见一斑。到目前为之jQuery已经发布到1.2
- JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它
- MinTTY 是一个小巧但却很实用的 Cygwin 终端机,但有个严重的问题就是无法调用交互性的 Windows 原生程序,比如说 mysq