如何在xsl或xml中设置每页5条记录

时间:2015-10-09 09:00:42

标签: xml xslt

使用xml生成记录,使用xsl显示记录,我有100条记录,以及如何添加页码。

如何在xsl文件或xml中设置每页5条记录尝试使用<xsl:for-each select="main/sub">但是每页提供相同的记录5次

<xsl:template match="book">
   <xsl:for-each select="mani/sub">
      <xsl:apply-templates mode="sub" select="."/>
      <xsl:for-each select="./pages/page">
         <xsl:apply-templates mode="page" select="."/>
      </xsl:for-each>
      <p style="page-break-after: always"/> 
   </xsl:for-each>
</xsl:template>

1 个答案:

答案 0 :(得分:1)

我对输出的结构并不完全清楚。但是,在每n次运行后将一个元素放入for-each-loop非常简单。你可以这样做:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
     <xsl:template match="book">

     <xsl:for-each select="number|mani/sub/display-number|mani/sub/pages/page/number|mani/sub/pages/page/weight">
         <xsl:value-of select="."/>
         <xsl:text> </xsl:text>
         <xsl:if test="position() mod 5 = 0"><Page_break/></xsl:if>
     </xsl:for-each>
    </xsl:template>
</xsl:transform>

此脚本获取输入中的所有数字,将每个数字放入,每个数字后面加一个空格。关键部分是position() mod 5 = 0。这样可以确保只有当前循环位置可以被5分割时才会输出分页符元素,这意味着:每运行5次。

顺便说一句:<Page break>格式不是很好的XML,你最好把它改成<Page break>或类似的东西。