1.1.1. 新组分页
分页是自然的,但如果想在某处强制分页如新组新页,那么可以使用Word的分页符(CTRL+ENTER快捷键),但会导致最后出现空白页;这样只能使用如下几种方式:
1、 分组声明中加@section,如<?for-each@section:G_PO_HEADER?>。
2、 <?end for-each?>前加<?split-by-page-break:?>。这个翻译后,实际上是:
<xsl:if test="position()<last()">
<xsl:attribute name="break-before">page</xsl:attribute>
</xsl:if>
3、 <?end for-each?>前加<xsl:attribute name="break-after">page</xsl:attribute>,此法下RTF最后无空白页,但PDF有空白页。
4、 <?end for-each?>前加<xsl:attribute name="break-before">page</xsl:attribute>此法下RTF、PDF最后都有空白页。
1.1.2. 条件分页、固定行分页
1、 任意条件分页,需要借助IF + 上面的break-after或者break-before,如:
<?if:CURRENCY_CODE="CNY"?>
<xsl:attribute name="break-before">page</xsl:attribute>
<?end if?>
2、 固定行分页,需要借助IF + 上面的break-after或者break-before,在行<?end for-each?>前,如下语句控制每页5行:
<?if:position() mod 5 =0?>
<xsl:attribute name="break-before">page</xsl:attribute>
<?end if?>
1.1.3. 页眉页脚
1、 标准的页眉页脚,即单个页眉页脚,使用Word的功能即可。
2、 扩展的页眉页脚,可使用<?start:body?><?end body?>把主体部分“框”起来,凡是在这两个标记之外的东西,都将被当作页眉页脚。
1.1.4. 页码和页数
1、 可以用Word的“自动图文集”,在任意地方插入页码,这个是“自然页码”。
2、 如果在某种情况下想让页码从特定值开始,比如新的组页码重新编号,则需要借助命令,如在for-each后写:<?initial-page-number:1?>。这里的“1”,实际上也可以用数据文件中的XML元素来替换。
1.1.5. 末页、奇偶页不同
1、 Word可在页眉页脚部分实现首页不同或奇偶页不同,没法实现末页不同,即使借助代码控制,实际实现的也是末页布局不同,而非“页眉页脚”不同。
<?start@last-page:body?><?end body?>
报表本身仅有一页时,则用<?start@last-page-first:body?><?end body?>
例子“Advanced/Last Page”,注意布局需要独立成页,即之前需要加分页符。
2、 以偶数页结束,主要目的是显示偶数页页眉页脚
<?section:force-page-count;’end-on-even-layout’?>
如果仅显示空白页,则用<?section:force-page-count;’end-on-even’?>
3、 以奇数页结束,主要目的是显示奇数页页眉页脚
<?section:force-page-count;’end-on-odd-layout’?>
如果仅显示空白页,则用<?section:force-page-count;’end-on-odd’?>