XMLP之开发笔记

本文详细介绍了XMLP的开发笔记,包括XSL与XMLP简易语句的使用,RTF中的布局,页眉页脚的处理,嵌套模板的定义与调用,以及分页、条件格式化、变量与排序等高级技巧。此外,还提到了XMLP在处理矩阵报表和数据格式化方面的应用。
摘要由CSDN通过智能技术生成

  • 可以采取两种方式编写布局语言,一是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"?>

        <xsl:attribute name="break-before">page</xsl:attribute>

        <?end if?>

         注:要在每行的<?endforeach?>前哦; if和分页代码要写在同一个E中.

  • 分页(固定行分页)

        固定行分页,需要借助IF +上面的break-after或者break-before,在行 <?endforeach?>前,如下语句控制每页5行:

        <?if:position() mod 5 =0?>

        <xsl:attribute name="break-before">page</xsl:attribute>

        <?end if?>

       在测试过程中发现问题,第一句改为下面这句:

       <?if: position()!= 1 and position() mod 5 = 1?>

  • 强制页码从某一个数值起始

<?initial-page-number:pagenumber?>: 参数pagenumber(1.可以是固定的值 2.可以XML传过来的值)

或<?initial-page-number:$pagenumber?>:其中pagenumber为在RTF中自定义的变量.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值