<?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>

posted on 2009-07-26 16:56  冯瑞涛  阅读(479)  评论(0编辑  收藏  举报