如何在XSLT中重置页码

时间:2012-11-14 07:04:44

标签: xslt xslt-1.0

我遵循XSLT结构:

<fo:layout-master-set>
    <fo:simple-page-master master-name="simpleA4" >                    
      <fo:region-body/>
      <fo:region-after extent="0.4cm"/>          
    </fo:simple-page-master>             
</fo:layout-master-set>

 <fo:page-sequence master-reference="simpleA4" >

    <fo:static-content flow-name="xsl-region-after">
      <fo:block font-size="5pt">
        Page <fo:page-number  />
      </fo:block>
    </fo:static-content>

    <fo:flow  flow-name="xsl-region-body">   
        <fo:block font-size="8pt">
            <!-Loop goes here->
        </fo:block>
    </fo:flow>

</fo:page-sequence>

我需要从1开始再次重新启动<fo:page-number />,以便在体内循环。是否可以重置页码或任何其他想法?

2 个答案:

答案 0 :(得分:5)

我认为这是可能的,试试这个

<fo:page-sequence master-reference="simpleA4" initial-page-number="1" force-page-count="no-force">

并将fo:page-sequence放入您的循环中。

答案 1 :(得分:0)

我不确定您是否可以直接重置fo:page-number直接通过xslt,因为页码由FOP指定。当页面包含页面中包含未知行的动态内容时,很难找到页码。你为此尝试了<fo:page-number-citation/>

我建议你如果你确定每一行都有固定的行,你可以手动生成行号而不是<fo:page-number/>。删除fo:static-content节点以生成页码并手动计算页码并将其添加到每页的末尾。

让我们假设您的网页有80行,正文

for each 1 to totalRows
  add page header
  when rowCount%80=0
    add pageNumber