`
terryfeng
  • 浏览: 504004 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个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>

分享到:
评论

相关推荐

    xml和xsl的练习例子

    在XML和XSL的实践中,我们通常会创建一个XML文件来存储数据,然后编写一个XSL样式表来定义数据如何被呈现。XSLT的转换过程可以非常复杂,包括元素的复制、选择、排序、条件判断以及模板匹配等操作。例如,可以使用...

    在XSL使用数组例子

    在XSL中,我们不能像在其他编程语言中那样声明一个数组并初始化它。然而,我们可以通过创建一系列的变量或模板来模拟数组。每个变量代表数组的一个元素,通过引用这些变量,我们可以实现类似于数组的操作,如遍历和...

    xsl学习笔记,入门知识

    这个例子中的`match="name"`表示模板匹配XML中的`&lt;name&gt;`元素,`&lt;xsl:value-of select="."/&gt;`则用于输出匹配元素的文本内容。 接下来是XPath,它是XSLT中的导航工具,用于在XML文档中查找节点。XPath表达式可以返回...

    xsd,xml,htm,xsl,dom例子

    在这个例子中,可能有一个名为"zoo.xml"的文件,它用XML格式定义了动物园的各种元素,如动物种类、年龄、性别等。XML文件通常包含元素、属性和文本,使得数据易于理解且可跨平台操作。 XSD是XML的规范语言,用于...

    xsl入门教程

    在这个例子中,我们定义了一些基本的标记,如 `&lt;name&gt;`、`&lt;sex&gt;`、`&lt;birthday&gt;` 和 `&lt;skill&gt;` 来描述个人信息。这些标记的使用使得文档具有更好的语义结构,同时也便于机器解析。 #### 三、使用CSS初步美化XML文档 ...

    跟我学XSL

    第一个XML文档 2.XSL入门 3.XSL模板与匹配模式 4.测试模式 5.XSL中的choose 6.运算符,关系与逻辑运算符,特殊字符等 7.XSL函数之一 8.脚本与XSL的结合及应用 9.XSL函数之二(DOM中对象的方法)

    xsl简易教程,让你轻松入门

    一篇非常不错的xsl简易教程,希望对您有所帮助

    XSL开发基础参考资料

    对于初学者或经验丰富的开发者来说,拥有一个XSL知识速查工具非常有用。它通常包含了XSL函数、元素和XPath的详细列表,以及它们的语法和用法。这可以帮助开发者快速查找并回忆起特定的功能,提高工作效率。 综上所...

    XSL简明教程(5)

    - 在这个例子中,我们使用了`Microsoft.XMLDOM`对象。 2. **加载XSL文件**: - 同样使用`Microsoft.XMLDOM`对象加载XSL文件。 3. **转换文档**: - 调用`transformNode`方法将XML文档转换为HTML格式,并显示在...

    XSL 中文教程大全

    - **XSL_tour.CHM**:可能是一个完整的XSL参考手册,包含XSL的全面介绍和详细指南。 - **跟我学XSL(一)-XML教程,样式表技术.htm** 和 **跟我学XSL(一)、(二).mht**:这些文件提供逐步的学习指导,帮助初学者...

    XSL.rar_dll编辑_xsl_xsl debug_xsl editor_xslxsl·com

    标题中的“XSL.rar_dll编辑_xsl_xsl debug_xsl editor_xslxsl·com”表明这个压缩包可能包含一个用于编辑XSL(Extensible Stylesheet Language)文件的工具,可能是一个XSL编辑器,同时可能支持DLL(动态链接库)...

    跟我学xsl.doc

    例如,`&lt;xsl:template match="elementName"&gt;`定义了一个模板,该模板会在遇到名为"elementName"的XML元素时被触发。 三、XSL中的测试模式 测试模式是XPath表达式在XSLT中的应用,用于决定模板是否应被应用到当前上...

    xsl教程

    在这个例子中,`input.xsl`是XSL样式表,`input.xml`是要转换的XML文档,而`output.html`是转换后的结果。通过调用`TransformerFactory.newInstance()`创建一个工厂,然后使用`newTransformer()`方法加载XSL样式表。...

    xsl解析xml生成表格,表格行动态隐藏与显示

    在这个例子中,我们假设`test.xml`包含一个`root`元素,其中有许多`data`元素,每个`data`元素都有`id`, `name`和`value`属性。XSLT将这些元素转换为表格行,并为每个行添加一个点击事件监听器,当用户点击时,调用`...

    网页XSL基础教程,支持XML和XSL

    无论是浏览器端还是服务器端的转换,XSL都是一个强大的工具,能够帮助我们解决多种问题。尤其在服务器端转换方面,XSL的应用更是广泛,不仅限于当前的Web浏览器环境,还包括未来可能出现的各种新型浏览设备和技术。

    xsl官方文档

    在这个例子中,我们使用`tokenize()`函数将字符串'item1,item2,item3'分割成了三个单独的项,并逐行输出。 理解并熟练掌握XSLT、XPath和XSL-FO对于处理XML数据至关重要。官方文档提供了详细的规范和实例,帮助...

    xsl javascript 传递参数

    例如,假设我们有一个名为`contactsuseparm.xsl`的XSL样式表,它接受一个参数`contactType`来过滤联系人列表。在JavaScript中,我们可以这样做: ```javascript var xml = new DOMParser().parseFromString(xmlData...

    xsl.rar_XSL形式

    在"XSL.rar_XSL形式"这个压缩包中,我们可能找到了一个使用XSL来格式化和展示学生信息的例子。这个例子可能是将XML数据转化为更易于阅读和理解的表格格式,同时可能还包含了显示学生照片、提示文字以及ID号等功能。 ...

    xml+xsl中分割字符

    在这个例子中,`&lt;data_info&gt;`元素包含了一个名为`CC_ID`的属性,其值由逗号`,`分隔的一系列数字组成。 #### XSLT样式表(`test.xsl`) ```xml &lt;xsl:stylesheet version="1.0" xmlns:xsl=...

    Xsl参考(pdf)

    考虑一个名为 "standard.xsl" 的样式表,其中包含为 `message` 元素定义的模板: ```xml &lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt; &lt;xsl:template match="message"&gt; ...

Global site tag (gtag.js) - Google Analytics