- 可以采取两种方式编写布局语言,一是XSL语句,二是XMLP简易语句,个人建议使用前者,因为其是国际通行标准。另外,这两种语法可以混合使用,比如上面的条件格式化行和单元格。
在RTF中直接写的只能是XMLP简易语句;在窗体域中则上述两者皆可。
标准的页眉页脚中不允许使用窗体域;但扩展的页眉页脚中可以使用。
- 如果模板中要求多个页眉页脚,使用下面的标记来标示出报表的主体部分
<?start:body?>
……
<?end body?>
-
嵌套模板
由于在页眉和页脚中不允许使用窗体域,而当报表页眉页脚中希望插入XML数据的时候,可以考虑使用嵌套模板。
嵌套模板是在模板中定义一个子模板,然后在需要的地方调用它,如在页眉页脚中调用它。
1. 定义子模板
子模板标记之间可以使用任何的标记和内容,和模板的主体部分没有任何区别
<?template:internal template name?>
……
<?end template?>
2. 调用子模板
下面两条语句都可以:
<?call:internal template name?>
<?call-template:internal template name?>
- XML中计算除法用div
例如: <?pick_qty div req_qty?>
-
XML Publisher 支持Word中的分栏功能,使报表输出能够以多栏的方式打印。
如下是地址簿的多栏打印效果
-
分页(按组分页)
分页是自然的,但如果想在某处强制分页如新组新页,那么可以使用Word的分页符(CTRL+ENTER快捷键),但会导致最后出现空白页。
可以使用如下几种方式:
1、分组声明中加@section,如<?for-each@section:Group_Name?>;
2、 <?end for-each?>前(不同的E中哦)加<?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最后都有空白页。
-
分页(条件分页)
任意条件分页,需要借助IF +上面的break-after或者break-before,如:
<?if:CURRENCY_CODE="CNY"?>
<