zoukankan      html  css  js  c++  java
  • 一个XSL 翻页例子入门

    <?xml version="1.0" encoding="gb2312"?>
    <!--由于 XSL 样式表本身也是一个 XML 文档,因此它总是由 XML 声明起始:-->

    <!--  XSL 样式表的根元素 <xsl:stylesheet>,定义此文档是一个
    XSLT 样式表文档(连同版本号和 XSLT 命名空间属性)。 -->
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

      <!--声明局部或全局参数。-->
      <!--注释:如果在模板内声明参数,就是局部参数,如果作为顶层元素来声明,就是全局参数。-->
      <xsl:param name="size" select="4"/>

      <!--模板:当某个指定的节点被匹配时所应用的规则。 这里是AllProSaleD-->
      <!--match 属性用于关联 XML 元素和模板。match 属性也可用来为整个文档定义模板。
      match 属性的值是 XPath 表达式(举例,match="/" 定义整个文档)。-->
      <xsl:template match="AllProSaleD">
        <!-- <xsl:apply-templates> 元素可把一个模板应用于当前的元素或者当前元素的子节点。 -->
        <!-- XPath谓语表示 除Size变量 余数为1的Record节点时候应用模板 -->
        <xsl:apply-templates select="record[position() mod $size = 1]">
          <!--传递给模板的参数的值-->
          <!--<xsl:with-param> 元素定义了传递给模板的参数的值。
          注释:<xsl:with-param> 元素的 name 属性的值必须与 <xsl:param> 元素中的 name 相匹配,否则将忽略 <xsl:with-param> 元素,。
          注释:<xsl:call-template> 和 <xsl:apply-templates> 中均允许使用 <xsl:with-param> 元素。
          -->
          <!-- XPath谓语表示 所有Record 除以 Size 的结果 最小整数3.14 等于4 -->
          <xsl:with-param name="pages" select="ceiling(count(record) div $size)"/>
        </xsl:apply-templates>
      </xsl:template>

      <xsl:template match="record">
        <!--模板参数-->
        <xsl:param name="pages"/>
        <!-- 定义常量 --><!--如果 select 属性含有文字字符串,则必须给字符串加引号。-->
        <!-- 返回当前正在被处理的节点的 index 位置。 每次调用都会重新计算赋值给page -->
        <xsl:variable name="page" select="position()"/>
        <div id='content{$page}' style="display:'none'" title="content{$page}">
          <h2>报表2</h2>
          <table border="1" width="100%" cellpadding="0" cellspacing="0" >
            <tr bgcolor="#9acd32" color="#ffffff" >
              <th align="left">产品名称</th>
              <th align="left">产品售价</th>
              <th align="left">本金</th>
              <th align="left">销售数量</th>
              <th align="left">销售时间</th>
              <th align="left">经销商</th>
              <th align="left">收入</th>
            </tr>
            <!-- <xsl:for-each> 元素允许您在 XSLT 中进行循环。 -->
            <!-- select 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录。 -->
            <!-- 轴:所有自己本身(如果是Record) 以及 轴:后面的兄弟节点【谓词-后面的Size个兄弟】(也就是后面的Size个兄弟和他自己) -->
            <xsl:for-each select="self::record | following-sibling::record[position() &lt; $size]">
              <tr>
                <td>
                  <!-- <xsl:value-of> 元素用于提取某个选定节点的值,并把值添加到转换的输出流中:-->
                  <!-- select 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录。-->
                  <xsl:value-of select="productName"/>
                </td>
                <td>
                  <xsl:value-of select="proPrice"/>
                </td>
                <td>
                  <xsl:value-of select="proPrincipal"/>
                </td>
                <td>
                  <xsl:value-of select="saleNumber"/>
                </td>
                <td>
                  <xsl:value-of select="saleDate"/>
                </td>
                <td>
                  <xsl:value-of select="Del"/>
                </td>
                <td>
                  <xsl:value-of select="Income"/>
                </td>
              </tr>
            </xsl:for-each>
          </table>
          <div id="navBar">
            <!--  <xsl:choose> 元素用于结合 <xsl:when> 和 <xsl:otherwise> 来表达多重条件测试。 -->
            <xsl:choose>
              <!-- 一共就一页 -->
              <xsl:when test="$pages = 1">
                第<xsl:value-of select="$page" />页---

                共有<xsl:value-of select="$pages" />页---
              </xsl:when>
              <!-- 第一页时 -->
              <xsl:when test="$page = 1">
                第<xsl:value-of select="$page" />页---
                <a href="#{$page + 1}" onclick="nextPage({$page + 1})">下一页</a>---
                共有<xsl:value-of select="$pages" />页---
              </xsl:when>
              <!-- 最后一页时 -->
              <xsl:when test="$page = $pages">
                第<xsl:value-of select="$page" />页---
                <a href="#{$page - 1}" onclick="prevPage({$page - 1})">上一页</a>---
                共有<xsl:value-of select="$pages" />页---
              </xsl:when>
              <!-- 条件都不是得情况 -->
              <xsl:otherwise>
                第<xsl:value-of select="$page" />页---
                <a href="#{$page - 1}" onclick="prevPage({$page - 1})">上一页</a>---
                <a href="#{$page + 1}" onclick="nextPage({$page + 1})">下一页</a>---
                共有<xsl:value-of select="$pages" />页---
              </xsl:otherwise>
            </xsl:choose>
          </div>

        </div>
      </xsl:template>
    </xsl:stylesheet>

    <?xml version="1.0" encoding="gb2312"?>
    <?xml-stylesheet type="text/xsl" href="demo.xsl"?>
    <AllProSaleD>
        <record  id="1">
            <productName name="产品名称">光学相机1500</productName>
            <proPrice name="产品售价">100.00</proPrice>
            <proPrincipal name="本金">20.00</proPrincipal>
            <saleNumber name="销售数量">67</saleNumber>
            <saleDate name="销售时间">2009-6-25 9:00</saleDate>
            <Del name="经销商">美晨</Del>
            <Income name="收入">112</Income>
        </record>
        <record id="2">
            <productName name="产品名称"> [延保]数码\光学相机1500 </productName>
            <proPrice name="产品售价">100.00</proPrice>
            <proPrincipal name="本金">20.00</proPrincipal>
            <saleNumber name="销售数量">67</saleNumber>
            <saleDate name="销售时间">2009-6-25 9:00</saleDate>
            <Del name="经销商">美晨</Del>
            <Income name="收入">112</Income>
        </record>
        <record id="3">
            <productName name="产品名称"> [延保]数码\光学相机1500 </productName>
            <proPrice name="产品售价">100.00</proPrice>
            <proPrincipal name="本金">20.00</proPrincipal>
            <saleNumber name="销售数量">67</saleNumber>
            <saleDate name="销售时间">2009-6-25 9:00</saleDate>
            <Del name="经销商">美晨</Del>
            <Income name="收入">112</Income>
        </record>

      <record  id="1">
        <productName name="产品名称">光学相机1500</productName>
        <proPrice name="产品售价">100.00</proPrice>
        <proPrincipal name="本金">20.00</proPrincipal>
        <saleNumber name="销售数量">67</saleNumber>
        <saleDate name="销售时间">2009-6-25 9:00</saleDate>
        <Del name="经销商">美晨</Del>
        <Income name="收入">112</Income>
      </record>
      <record id="2">
        <productName name="产品名称"> [延保]数码\光学相机1500 </productName>
        <proPrice name="产品售价">100.00</proPrice>
        <proPrincipal name="本金">20.00</proPrincipal>
        <saleNumber name="销售数量">67</saleNumber>
        <saleDate name="销售时间">2009-6-25 9:00</saleDate>
        <Del name="经销商">美晨</Del>
        <Income name="收入">112</Income>
      </record>
      <record id="3">
        <productName name="产品名称"> [延保]数码\光学相机1500 </productName>
        <proPrice name="产品售价">100.00</proPrice>
        <proPrincipal name="本金">20.00</proPrincipal>
        <saleNumber name="销售数量">67</saleNumber>
        <saleDate name="销售时间">2009-6-25 9:00</saleDate>
        <Del name="经销商">美晨</Del>
        <Income name="收入">112</Income>
      </record>
      <record  id="1">
        <productName name="产品名称">光学相机1500</productName>
        <proPrice name="产品售价">100.00</proPrice>
        <proPrincipal name="本金">20.00</proPrincipal>
        <saleNumber name="销售数量">67</saleNumber>
        <saleDate name="销售时间">2009-6-25 9:00</saleDate>
        <Del name="经销商">美晨</Del>
        <Income name="收入">112</Income>
      </record>
      <record id="2">
        <productName name="产品名称"> [延保]数码\光学相机1500 </productName>
        <proPrice name="产品售价">100.00</proPrice>
        <proPrincipal name="本金">20.00</proPrincipal>
        <saleNumber name="销售数量">67</saleNumber>
        <saleDate name="销售时间">2009-6-25 9:00</saleDate>
        <Del name="经销商">美晨</Del>
        <Income name="收入">112</Income>
      </record>
      <record id="3">
        <productName name="产品名称"> [延保]数码\光学相机1500 </productName>
        <proPrice name="产品售价">100.00</proPrice>
        <proPrincipal name="本金">20.00</proPrincipal>
        <saleNumber name="销售数量">67</saleNumber>
        <saleDate name="销售时间">2009-6-25 9:00</saleDate>
        <Del name="经销商">美晨</Del>
        <Income name="收入">112</Income>
      </record>
      <record  id="1">
        <productName name="产品名称">光学相机1500</productName>
        <proPrice name="产品售价">100.00</proPrice>
        <proPrincipal name="本金">20.00</proPrincipal>
        <saleNumber name="销售数量">67</saleNumber>
        <saleDate name="销售时间">2009-6-25 9:00</saleDate>
        <Del name="经销商">美晨</Del>
        <Income name="收入">112</Income>
      </record>
      <record id="2">
        <productName name="产品名称"> [延保]数码\光学相机1500 </productName>
        <proPrice name="产品售价">100.00</proPrice>
        <proPrincipal name="本金">20.00</proPrincipal>
        <saleNumber name="销售数量">67</saleNumber>
        <saleDate name="销售时间">2009-6-25 9:00</saleDate>
        <Del name="经销商">美晨</Del>
        <Income name="收入">112</Income>
      </record>
      <record id="3">
        <productName name="产品名称"> [延保]数码\光学相机1500 </productName>
        <proPrice name="产品售价">100.00</proPrice>
        <proPrincipal name="本金">20.00</proPrincipal>
        <saleNumber name="销售数量">67</saleNumber>
        <saleDate name="销售时间">2009-6-25 9:00</saleDate>
        <Del name="经销商">美晨</Del>
        <Income name="收入">112</Income>
      </record>
    </AllProSaleD>

    冯瑞涛
  • 相关阅读:
    Setting up SharePoint Blogs, Wikis, and Announcements
    Reports 将透视表显示成没有级联关系的普通表
    TF80012: The document cannot be opened because there is a problem with the installation of the Microsoft Visual Studio v
    项目干系人分析的“四步法”
    Overload和Override的区别
    Add and Customize a Type of Work Item
    将所有的非DLL, PDB文件从一个位置Copy到另外一个位置,相同文件跳过
    如何删除工作项
    No Excel Calculation Services is available in the farm
    SPORTINGLIFE.COM
  • 原文地址:https://www.cnblogs.com/finehappy/p/1531430.html
Copyright © 2011-2022 走看看