`
阳光小菜鸟
  • 浏览: 97086 次
  • 性别: Icon_minigender_2
  • 来自: 郑州
社区版块
存档分类
最新评论

跨浏览器的xslt分页(一)

    博客分类:
  • XML
阅读更多
xml文件(rss2.0)
 
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="template.xsl"?>
<rss xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>电影</title>
    <link>http://localhost:8080/rss/3.xml</link>
    <description>电影频道</description>
    <image>
      <title>添加</title>
      <url>http://localhost:8080/rss/images/add.gif</url>
      <description>添加</description>
    </image>
    <item>
      <title>土豆视频</title>
      <link>http://www.tudou.com</link>
      <description>土豆视频</description>
      <pubDate>Mon, 17 Dec 2007 16:00:00 GMT</pubDate>
      <guid>http://www.tudou.com</guid>
      <dc:date>2007-12-17T16:00:00Z</dc:date>
    </item>
    <item>
      <title>六间房</title>
      <link>http://www.6rooms.com</link>
      <description>六间房电影</description>
      <pubDate>Tue, 01 Jan 2008 16:00:00 GMT</pubDate>
      <guid>http://www.6rooms.com</guid>
      <dc:date>2008-01-01T16:00:00Z</dc:date>
    </item>
    <item>
      <title>tom电影频道</title>
      <link>http://ent.tom.com/movie/</link>
      <description>tom电影</description>
      <pubDate>Tue, 01 Jan 2008 16:00:00 GMT</pubDate>
      <guid>http://ent.tom.com/movie/</guid>
      <dc:date>2008-01-01T16:00:00Z</dc:date>
    </item>
    <item>
      <title>迅雷电影</title>
      <link>http://www.xunlei.com</link>
      <description>迅雷电影</description>
      <pubDate>Tue, 01 Jan 2008 16:00:00 GMT</pubDate>
      <guid>http://www.xunlei.com</guid>
      <dc:date>2008-01-01T16:00:00Z</dc:date>
    </item>
    <item>
      <title>网易电影</title>
      <link>http://ent.163.com/movie/</link>
      <description>网易电影</description>
      <pubDate>Tue, 01 Jan 2008 16:00:00 GMT</pubDate>
      <guid>http://ent.163.com/movie/</guid>
      <dc:date>2008-01-01T16:00:00Z</dc:date>
    </item>
  </channel>
</rss>


xsl文件:
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <!--Declare Current Page-->
 <xsl:param name="current">1</xsl:param>
 <!--Declare Page Size-->
 <xsl:param name="page">2</xsl:param>
 <!--Declare xmlDocument address-->
 <xsl:param name="ad">3.xml</xsl:param>


 <xsl:template match="/">
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
<title><xsl:value-of select="rss/channel/title"/></title>
    <script type="text/javascript">
    function paging(page,ad){
	    var xmlDocument;
	    var xslDocument;


	if (window.ActiveXObject){
		xslDocument=new ActiveXObject("Microsoft.XMLDOM");
		xslDocument.async=false;

		xmlDocument=new ActiveXObject("Microsoft.XMLDOM");
		xmlDocument.async=false;

		xslDocument.load("template.xsl");
                xmlDocument.load(ad);

		xslDocument.selectNodes("xsl:stylesheet/xsl:template[@match='/']").removeAll();
	        xslDocument.selectSingleNode("xsl:stylesheet/xsl:param[@name='current']").text=page;

	        document.body.innerHTML=xmlDocument.transformNode(xslDocument);

	}else{   // code for Mozilla, Firefox, Opera, etc.
		xslDocument=document.implementation.createDocument("","",null);
		xslDocument.async = false;

		xmlDocument=document.implementation.createDocument("","",null);
		xmlDocument.async=false;

		xslDocument.load("template.xsl");
                xmlDocument.load(ad);

		var xsltProcessor = new XSLTProcessor();
		xsltProcessor.importStylesheet(xslDocument);
		xsltProcessor.setParameter(null,"current",page);
		var result = xsltProcessor.transformToDocument(xmlDocument);
		var xmls = new XMLSerializer();
		document.body.innerHTML = xmls.serializeToString(result);
	}
    }
    </script>
</HEAD>
<body topmargin="0" leftmargin="0" bgcolor="#47A3AC" background="http://61.158.218.76/eums/generator/img/cncbg06040415593.jpg">
<xsl:apply-templates/>
</body>
</HTML>
</xsl:template>

<xsl:template match="rss" name="show1">
  <xsl:apply-templates select="item[position() &gt;= ($current - 1) * $page and position() &lt;= $current * $page]"/>
  <xsl:call-template name="page"/>
 </xsl:template>

 <xsl:template match="rss" name="show">
<table  border="0" cellspacing="0" cellpadding="0" style="position: absolute; width: 204px; height: 33px; left: 72px; top:13px">
                 <tr>
        <td align="left"><span style="text-decoration:none"><font color="#FAFAFA"><strong>当前栏目:<xsl:value-of select="channel/title"/></strong></font></span></td></tr>
</table>
<table  border="0" cellspacing="0" cellpadding="0" style="position: absolute; width: 600px; height: 313px; left: 25px; top:55px">
<tr>
<td> 
<font color="#FAFAFA"><span style="text-decoration: none"><strong>
Feed地址:<xsl:value-of select="channel/link"/></strong></span></font>
</td>
</tr>
<tr>
<td>
<font color="#FAFAFA"><span style="text-decoration: none"><strong>当前Feed内容: </strong></span></font>
</td>
</tr>
<xsl:for-each  select="channel/item[position() &gt; ($current - 1) * $page and position() &lt;= $current * $page]">
 <tr>
			<td>
				<table width="300"  height="30" border="0"  cellspacing="1" cellpadding="0">
					<tr>
						<td align="left" valign="middle"  height="29">
							<a>   
							    <xsl:attribute name="href"><xsl:value-of  select="link"/></xsl:attribute> 
							    <font color="#FAFAFA" size="2"><span style="text-decoration: none"><strong><xsl:value-of select="title"/> </strong></span></font>    
							</a>
						</td>
					</tr>
					<tr>
						<td align="left" valign="middle"  height="29">
							<font size="2" color="#FAFAFA" face="Arial"><xsl:value-of select="description"/></font>
						</td>
					</tr>
					<tr>
						<td align="left" valign="middle"  height="29">
							<font size="2" color="#FAFAFA" face="Arial"><xsl:value-of select="pubDate"/></font>
						</td>
					</tr>
				</table>
			</td>
			<td>
				<table width="300"  height="30" border="0"  cellspacing="1" cellpadding="0">
					<tr>
					<xsl:for-each  select="/rss/channel/image">
						<td align="left" valign="middle"  height="29">
						
							<img>   
							  <xsl:attribute   name="src"><xsl:value-of   select="/rss/channel/image/url"/></xsl:attribute>   
							</img>  
						</td>
					</xsl:for-each>
					</tr>					
				</table>
			</td>
	    </tr>

</xsl:for-each>
<tr>
<td>
  <xsl:call-template name="show1"/>
</td>
</tr>
</table>
</xsl:template>

 <xsl:template name="page">



  <xsl:for-each select="/rss/channel/item[position() mod $page = 1]">
   <a href="javascript:paging({position()},'{$ad}')">
    <font color="#FAFAFA" size="3"><span style="text-decoration: none"><strong>
    <xsl:value-of select="position()"/>
     </strong></span></font> 
   </a><xsl:text>      </xsl:text>   
  </xsl:for-each>
 </xsl:template>

</xsl:stylesheet>
分享到:
评论

相关推荐

    xslt语法参考手册

    XSLT可以通过控制`&lt;xsl:page-break&gt;`来实现分页,但需要注意浏览器和处理器的兼容性问题。 **5. XSLT的高级特性** - **扩展对象(Extension Objects)**:允许使用特定处理器提供的额外功能。 - **命名空间...

    datawindwo.net 程序

    XML RenderFormat选项得到了增强,它能以XML格式下载用户请求的下一页记录,利用浏览器已缓存的XSLT样式表对这些记录进行转换,然后在不刷新整个页面的情况下显示它们。这种方式极大地优化了分页性能,提高了用户...

    使用XSL和CSS的带有分页符HTML报告

    XSLT(XSL Transformations)是实现这一过程的具体语言,它定义了如何从XML源数据生成目标文档的规则。 在创建分页的HTML报告时,XSLT可以用来处理XML数据,并在适当的位置插入分页符。例如,当一个表格或段落跨越...

    xml.rar_xml

    在这个项目中,可能有一个XML文件包含了数据库记录,使用XSLT将这些记录转换成HTML表格,并利用JavaScript实现了分页显示。用户可以在浏览器中查看和操作这些数据,同时,XML的验证确保了数据的准确无误。为了实现这...

    AJAX技术入门 ajax运行原理

    1. 浏览器兼容性:不是所有浏览器都支持所有AJAX特性,需要考虑跨浏览器开发。 2. SEO问题:搜索引擎可能无法正确抓取和索引异步加载的内容。 3. 安全性:由于数据交换是在幕后进行,可能导致安全漏洞。 4. 用户感知...

    利用XML实现通用WEB报表打印

    JavaScript可以用来添加动态效果,如分页、排序和过滤,而CSS则负责样式布局,确保报表在不同设备和浏览器上的视觉一致性。 综上所述,利用XML实现通用WEB报表打印的过程主要包括:定义XML结构(通过DTD或XML ...

    AJAX基础概念、核心技术与典型案例(内涵动态实例)

    传统的分页方式,多数是通过单击按钮的方式来显示分页的。利用Ajax可以通过使用滑块的滑动来选择所显示的分页,这种拖拽的方式有很好的用户体验。 /test.html 滑动显示分页页面 /js JavaScript脚本...

    XML+ASP结构的BBS式留言程序

    1. **用户界面**:用户通过浏览器访问ASP页面,看到一个显示现有留言的界面,可能还包括输入框用于提交新留言。 2. **请求处理**:当用户提交新留言时,ASP脚本接收到请求,验证用户输入,然后将新留言的数据结构...

    动态XML网站设计探讨

    1. **XSLT**(XSL Transformations):用于将XML文档从一种格式转换为另一种格式。 2. **XSL-FO**(XSL Formatting Objects):用于控制最终输出的样式和布局。 XSLT的工作原理是通过读取原始XML文档,并根据预定义...

    AJAX技术学习总结参照.pdf

    它并不依赖于一种全新的编程语言,而是利用已有的Web开发技术,如JavaScript、XHTML、CSS、DOM、XML、XSLT以及XMLHttpRequest对象,组合形成一个能够实现异步数据交换的平台。 在传统Web应用中,用户每次交互都需要...

    ajax技术演示文稿

    - 数据加载:分页、无限滚动、实时搜索结果预览等,仅加载需要更新的部分内容。 - 实时通信:聊天室、通知系统,实时显示新消息或状态变化。 - 动态地图:拖动地图、缩放时,仅加载当前视图内的地理数据。 **Ajax的...

    asp.net

    - **数据分页(Data Paging):** 在 Web 应用程序中,数据分页是非常重要的功能之一,它能够有效地管理大数据集,提供更好的用户体验。ASP.NET 通过 GridView 控件等提供了内置的支持。 - **大事务处理(BulkUpdates...

    Using_ASP_NET_to_return_XML_formatted_data.rar_return

    在实际项目中,你可能会遇到更复杂的需求,如XML Schema验证、XPath查询、XSLT转换等,这些都是在处理XML数据时可能会用到的技术。不断学习和实践,你将能够更好地掌握ASP.NET与XML的结合应用。

    一些常用的API

    BOM API则提供对浏览器窗口、历史记录、定时器等的访问。 2. **jQuery API** jQuery是一个轻量级的JavaScript库,它简化了DOM操作、事件处理、动画制作和Ajax交互。jQuery的核心API包括选择器(用于查找DOM元素)...

    qinxuewu-mongo-web-select-master_java_

    在这个项目中,开发者可能创建了一个Web应用程序,允许用户通过浏览器与MongoDB数据库交互,执行查询和数据管理。 【描述】中提到的 "XDOC(mini)" 是XDOC的精简版,XDOC是一个文档生成工具,它提供了一种基于XML的...

    ASP网站源代码

    ASP是一种基于服务器的技术,它允许开发者在HTML页面中嵌入脚本代码,这些代码在服务器上执行后,生成动态内容发送到客户端浏览器。VBScript是ASP中最常用的脚本语言,它与Visual Basic有密切关系,语法简单易懂。 ...

    ASP.NET课后习题

    - **B/S结构**:浏览器/服务器架构,其最大优势在于无需在客户端安装任何软件,仅需一个可联网的浏览器即可访问,实现了真正的跨平台操作,极大地提高了应用的灵活性和可维护性。 - **C/S结构**:客户端/服务器架构...

    java jdk实列宝典 光盘源代码

    内容: 1 转换基本数据类型;运算符;计算阶乘; 2 复数类;java的参数传递;自定义形状类;类的加载顺序;方法和变量在继承时的覆盖和隐藏;...java为数据结构中的列表定义了一个接口类...用servlet实现分页查看数据库;

    ajax基础技术入门

    Ajax(Asynchronous JavaScript and XML)是一种创建动态网页的技术,它允许在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。这种技术由Jesse James Garrett在2005年提出,由于其显著提升了用户...

Global site tag (gtag.js) - Google Analytics