BI Publisher(rtf)模板开发语法大全

本文详细介绍了BI Publisher(RTF)模板开发,包括布局格式化、字段计算技巧、分页策略、多媒体元素使用、其他常用语法以及高级布局方法。内容涵盖条件格式化、分组计算、页眉页脚、图片和图表插入、动态列和交叉报表等,旨在提供全面的RTF模板开发指导。
摘要由CSDN通过智能技术生成

 

Rtf模板开发例如背景,纹理分栏等等功能都能用word工具实现不再具体总结大家可以参考word教程。。。。。

 

.

定义一个组的目的是告诉XMLPublisher对重复的数据行进行循环显示,也就是说需要使用for-each进行数据记录的循环显示

<?for-each:XML group element tag name?>

……

<?endfor-each?>

 

 .新组分页

分页是自然的,但如果想在某处强制分页如新组新页,那么可以使用Word的分页符(CTRL+ENTER快捷键),但会导致最后出现空白页;这样只能使用如下几种方式:

1 分组声明中加@section,如<?for-each@section:G_PO_HEADER?>

2 <?end for-each?>前加<?split-by-page-break:?>。这个翻译后,实际上是:

<xsl:iftest="position()<last()">
< xsl:attribute name="break-before">page</xsl:attribute>
< /xsl:if>

3 <?end for-each?>前加<xsl:attributename="break-after">page</xsl:attribute>,此法下RTF最后无空白页,但PDF有空白页。

4 <?end for-each?>前加<xsl:attributename="break-before">page</xsl:attribute>此法下RTFPDF最后都有空白页。

 

.条件分页、固定行分页

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 标准的页眉页脚,即单个页眉页脚,使用Word的功能即可。

2 扩展的页眉页脚,可使用<?start:body?><?endbody?>把主体部分起来,凡是在这两个标记之外的东西,都将被当作页眉页脚。

 

.页码和页数

1 可以用Word自动图文集,在任意地方插入页码,这个是自然页码

2 如果在某种情况下想让页码从特定值开始,比如新的组页码重新编号,则需要借助命令,如在for-each后写:<?initial-page-number:1?>这里的“1”,实际上也可以用数据文件中的XML元素来替换。

 

.末页、奇偶页不同

1  Word可在页眉页脚部分实现首页不同或奇偶页不同,没法实现末页不同,即使借助代码控制,实际实现的也是末页布局不同,而非页眉页脚不同。

<?start@last-page:body?><?end body?>

报表本身仅有一页时,则用<?start@last-page-first:body?><?endbody?>

例子“Advanced/LastPage”,注意布局需要独立成页,即之前需要加分页符。

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’?>

 

.嵌套模板

由于在页眉和页脚中不允许使用窗体域,而当报表页眉页脚中希望插入XML数据的时候,可以考虑使用嵌套模板。

嵌套模板是在模板中定义一个子模板,然后在需要的地方调用它,如在页眉页脚中调用它。

定义子模板

子模板标记之间可以使用任何的标记和内容,和模板的主体部分没有任何区别

<?template:internaltemplate name?>

……

<?end template?>

. 调用子模板

<?call:internaltemplate name?>

 

.图片插入

接插入图片

可以直接在模板中插入jpggifpng格式图片

URL链接图片

•在模板中随意插入一张图片

•在设置图片对话框中的网站标签页中,在可选文字中输入如下的URL格式链接

url:{’http://image location’}

url:{’http://www.oracle.com/images/ora_log.gif’}

OA Media 库图片

•在模板中随意插入一张图片

•在设置图片对话框中的网站标签页中,在可选文字中输入如下的URL格式链接

url:{’${OA_MEDIA}/image name’}

url:{’${OA_MEDIA}/ORACLE_LOGO.gif’}

. 超链接

•使用word中的插入超链接功能来插入静态链接

•如果超链接包括了模板中的数据元素,可以在运行时动态的创建超链接,在链接地址中按如下格式输入:

{URL_LINK}

URL_LINK可以是一个完整的URL地址,也可以使URL地址中的一部分。

它是动态传入的数据元素,如下传入URL的参数:

http://www.oracle.com?product={PRODUCT_NAME}

PRODUCT_NAME是运行时传入值的数据元素名称

如下是一个完整的URL地止

{SUPPLIER_URL}

SUPPLIER_URL 是运行时传入值的数据元素名称

 

.表格

XML Publisher 支持通过XML数据来动态创建表格内容和题头

动态创建题头的步骤:

à使用<?tagname?>标记的方式来插入题头,并将其格式化为题头。这里不能使用表单

域的功能。

例如报表要求将公司名称显示为题头,XML数据标记名为<COMPANY_NAME>,在

报表模板中需要显示标题的地方输入<?COMPANY_NAME?>即可

à通过word的内置功能创建表格的其他内容

在运行的时候,系统自动替换表格中和题头标记的值

 

十一.  复选框

可以在模板中定义复选框,并根据传入的值来决定是否被选中

定义复选框的步骤:

使用word中的复选框型窗体域功能添加复选框

打开复选框型窗体域选项窗口

设置默认值:未选中或选中

在窗体域帮助文字中输入复选框选中的条件表达式,它必须是一个布尔表达式,只能返回truefalse

如:XML数据中包括了<population>的元素,如果<population>的值大于10000

则复选框被选中,则在窗体域帮助文字中输入如下的条件表达式:

<?population>10000?>

 

十二.IF语句

<?if:condition?>

……

<?end if?>

例子

<?if:VENDOR_NAME=’COMPANYA’?>

……

<?end if?>

样板文本中使用IF语句

<?if@inlines:condition?>

……

<?end if?>

例子

1.The program was<?if:SUCCESS=’N’?>not<?end if?> successful

结果The program was

not

successful

2.The program was<?if@inlines:SUCCESS=’N’?>not<?end if?> successful

结果: The program wassuccessful.

 

十三.If-then-Else 语句

<?xdofx:if element_condition then result1 elseresult2 end if?>

例子:

<?xdofx:if AMOUNT > 1000 then 'Higher‘

Else

if AMOUNT < 1000 then 'Lower‘

Else

'Equal‘

end if?>

 

十四. Choose 语句

<?choose:?>

<?when:expression?>

……

<?when:expression?>

……

<?otherwise?>

                             

 

 

十五. 格式化列

根据条件显示或隐藏列

<?if@column:condition?>

……

<?end if?>

例子:

<?if@column:condition?>

<?quantity?>

<?end if?>

<?if@column: /items/@type="PRIVATE"?>

<?quantity?>

<?end if?>

 

十六. 格式化行

当条件满足的时候加亮行

设置行的背景颜色

满足条件的时候才显示行

根据条件来格式化表格的行

<?if:condition?> <?end if?>

<?if@row:condition?>

<xsl:attributename="background-color"

xdofo:ctx="incontext">lightgray

</xsl:attribute>

<?end if?>

 

十七. 单元格加亮(字体加亮)

可以根据条件来加亮单元格

<?if:condition>

<xsl:attribute xdofo:ctx="block"name="background-color">

red

</xsl:attribute>

<?end if?>

例子:

<?if:debit>1000?>

<xsl:attribute xdofo:ctx="block"name="background-color">

red

</xsl:attribute>

<?end if?>

举例

Settingfont to bold if invoice amount isgreater than $1,000.

 

<?if:ACCTD_AMT>1000?><xsl:attributexdofo:ctx="block" name="font-weight">bold</xsl:attribute><?endif?>

Invoice

Number

Invoice Amount

Grp: Invoice13222-2

CH$100.00EFE

 

Settingbackground color to greenif invoice amount is greater than $1,000.

<?if:ACCTD_AMT>1000?><xsl:attributexdofo:ctx="block" name="background-color">green</xsl:attribute><?endif?>

Invoice

Number

Invoice Amount

Grp: Invoice13222-2

CH$100.00EFE

 

 

 

十八. 计算合计值

1.    

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值