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

相关文章:

  • 2021-08-10
  • 2022-12-23
  • 2022-01-22
  • 2021-12-19
  • 2021-12-05
  • 2022-12-23
  • 2021-07-06
猜你喜欢
  • 2021-09-16
  • 2022-12-23
  • 2021-11-23
  • 2022-12-23
  • 2021-12-16
  • 2022-01-09
  • 2022-12-23
相关资源
相似解决方案