ITPub博客

首页 > 应用开发 > IT综合 > XML Publisher

XML Publisher

原创 IT综合 作者:liangxichen 时间:2011-08-16 09:34:46 0 删除 编辑

1.

ERROR:

The uploaded file CUX_GABRIEL_TEST_EMP.RTF is invalid. The file should be in RTF format

新建了一个word文档,然后再里面做的资料,最后将文件名“新建 Microsoft Word 文档.doc”改成了“CUX_GABRIEL_TEST_EMP.RTF”,上传为xml publisher templates 的template file时,出现如上错误。

Solution:将word文档重新另存,保存类型选择 “RTF格式(*.rtf)”。

2.

查看服务器端XML Publisher 版本号

在網上找到的方法:http://ora-apps.blogspot.com/2007/10/find-xml-publisher-version.html方法1):查看產出的PDF文件,在PDF Reader中File --> Properties,可以看到是用那個XML Publisher版本產生。方法2):登入DB Server,查看數據庫目前安裝的補丁包,可以知道上了那些XML Publisher版本補丁
SELECT DECODE (bug_number
, '3554613', '4.5.0'
, '3263588', 'XDO.H'
, '3822219', '5.0.0'
, '4236958', '5.0.1'
, '4206181', '5.5.0'
, '4561451', '5.6.0'
, '4905678', '5.6.1'
, '5097966', '5.6.2') PATCH, bug_number
FROM ad_bugs
WHERE bug_number IN
('3554613'
, '3263588'
, '3822219'
, '4236958'
, '4206181'
, '4561451'
, '4905678'
, '5097966');
方法3):登入AP Server,查看$OA_JAVA/oracle/apps/xdo/common/MetaInfo.class看來11.5.10.2是自帶XML Publisher 5.0版

3.

Xml publisher 类型的报表,主sql中有设定别名的,记得查看group中元素的属性-“XML标记”,看是否和元素的名称相同,因为在rtf格式设定的时候,是用“XML标记”的值来调用这个元素的,所以,不同的时候,改成相同(比较直观方便)或在rtf中使用“XML标记”的值。(做报表时,run出来发现有个有值的栏位为空,检查到此问题)。

4.

报表数字栏位显示为字符,在excel中选择多单元格时右下角无显示求和等(excel设置正确)。

Solution: 由于在rtf文件中数字设置了右对齐,因此没有注意到变量字符后面有空格,可左对齐一下即能发现。删除空格,解决。

5.

测试RUN 报表,跑完之后状态为COMPLETED, WARNING
此时点DIAGNOSTICS------view XML,如果有错误,一般是report.rdf有问题,例如元素的的xml tag和rtf中所引用的不同。

view XML时一般是如下错误:

无法显示 XML 页。
使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮,或以后重试。


--------------------------------------------------------------------------------

名称以无效字符开头。处理资源 'http://erp-test.chiic.com:8002/OA_CGI/FNDWRR.exe?temp_id=967179952' 时出错。第 13 行,位置: 8

<09-10>1400
-------^

6.

在RTF中将数据排序
在后面添加

排序可以选择ascending或desending,data-type可以选择number或text
7.

转excel的报表,可以在rtf中对值进行处理,改为T("值")以将值转换为文本,以解决数字型文本显示为科学记数等

朋友提示可以解决数字型字符位于前面的0消失的问题,有时间理解一下

[@more@]

2. RTF模版开发

2.1. 本章概述
2.1.1. 关注内容
相信随着XMLP版本的不断升级,其Desktop端的可视化功能将大大简化我们的设计工作,不过目前还有些地方不通过手工编写命令是无法完成的;此外,虽然模版开发是依托Word的功能完成,但有些“鲜为人知”的Word功能需要额外提示下。
所以本章收录的是常见问题的处理办法,并未包括完整的User Guide功能,当然也不包括Word的使用帮助。
2.1.2. XMLP和XSL-FO
可以采取两种方式编写布局语言,一是XSL语句,二是XMLP简易语句,个人建议使用前者,因为其是国际通行标准。另外,这两种语法可以混合使用,比如上面的条件格式化行和单元格。
在RTF中直接写的只能是XMLP简易语句;在窗体域中则上述两者皆可。
标准的页眉页脚中不允许使用窗体域;但扩展的页眉页脚中可以使用。
XMLP提供的语法,都是一种简化的“代号”,实际都要翻译成XSL,如果你精通XSL-FO,那么也可以在窗体域中直接用该语法,自由而灵活!如下SQL可以查到转换后的XSL-FO:
_select t2.application_short_name,
t2.template_code,
t1.LANGUAGE,
t1.template_name,
t3.file_name,
t3.xdo_file_type,
t3.file_data
FROM xdo.xdo_templates_tl t1, xdo.xdo_templates_b t2, xdo.xdo_lobs t3
WHERE t1.template_code = t2.template_code
AND t2.template_code = t3.lob_code
AND t1.LANGUAGE = ‘US’
AND t1.template_code = ‘CUXXMLPDEMO’
Tips:C:Program FilesOracleXML Publisher DesktopsamplesRTF templates有非常好的例子可供参考。

2.2. 布局格式化
2.2.1. 建议做法
充分利用Word的格式化功能:纸张自定义、颜色、字号、字体、标题样式、背景、水印、对齐、表格、分栏、模版日期、窗体域的数字/日期格式、文件图片、页眉页脚、自动图文集。
虽然可以代码控制,但既然依托Word作为可视化设计工具,我们就尽量使用Word功能来设计报表吧!
2.2.2. Word表格
和做网页一样,表格在报表布局中的地位至关重要,要熟练掌握,尤其是:
1、 标题行重复,可以实现新页重复标题。
2、 嵌套表格、行列合并、边框、底纹,可以实现特殊的布局。
3、 固定列宽、自动调整、禁止跨页断行,可以实现一些严格的布局控制。
2.2.3. 行截断与禁止折行
单据打印中对格式的要求比较高,如果某一行过长或者出现多次折行,就会破坏版面,尤其是套打等要求较高的场合,这里把各种方法作个小结。
1、 Word功能,不理想
固定列宽功能可以用,但固定行高不行,虽然设计时看到“固定”了,如果不加控制,运行后多出列宽的数据会自动折行。
2、 单行+截断,即控制只有以行,多余截断,禁止折行
在字段后,再加两个命令:
no-wrap
hidden
3、 多行+截断,难
如固定显示3行,多余部分截断,目前通过模版无法实现,只有在数据源中先将数据截至刚好3行的字符数,然后利用自动折行功能。这里还要注意空格,如果遇到空格,后面的单词又显示不下,将会提前自动折行
2.2.4. 条件格式化
在不同的条件下显示不同的颜色、不同的列数、不同的标题、不同的布局风格等等,这些都属于条件格式化,需要借助IF命令。
1、 比如不同币种凭证打印格式不同
任何布局
任何布局
2、 比如货币为CNY时才显示列,在目标列的单元格内写如下语句
字段值和格式
注:这还不是真正的动态列。
3、 比如偶数行底色为灰色,在行的任何单元格内写如下语句

gray

4、 比如超过100单元格呈红色,在目标单元格内写如下语句
100?>
red

2.3. 字段计算技巧
2.3.1. 建议做法
1、 计算字段可以在SQL中先完成。
2、 如果使用Oracle Reports做数据源,那么计算字段、统计字段也可以先完成。
3、 在SQL中的数据,都不带格式,格式在模版中设置;需要在模版中完成计算的字段,必须不带格式,主要指数字不能带千位符号。
2.3.2. 组内合计
N: Template Builder/插入/字段
向导可以完成基本的统计,目前支持分组内的:Sum、Count、Min、Max、Avarage。
自动生成的代码示例:。
2.3.3. 页内合计
要实现本页合计数,需分两步:声明合计变量、显示合计变量(可带格式)。
1、 对QUANTITY进行本页合计,声明变量QTYTOTAL,注意写在QUANTITY对应的组内,不然引用不到

2、 可在任意地方显示合计数

那么如何实现组内+页内合计呢?
.3.4. 结转合计
把上页的合计数显示到下页,与“页内合计”类似,需分两步:声明合计变量、显示合计变量。
用得少,可参考User Guide“Brought Forward/Carried Forward Totals”部分。
2.3.5. 累计数Running Totals
累计每行数字,实际上是这样完成的:先声明一个变量,初始化为0;累加;在需要的地方显示累计。
1、 在分组标记前初始化,Set变量

2、 计算累计值,通常写在欲累计的字段同一单元格内,比如下面的QUANTITY

3、 任意地方显示累计值,Get变量

2.4. 任何Page相关问题
2.4.1. 新组分页
分页是自然的,但如果想在某处强制分页如新组新页,那么可以使用Word的分页符(CTRL+ENTER快捷键),但会导致最后出现空白页;这样只能使用如下几种方式:
1、 分组声明中加@section,如。
2、 前加。这个翻译后,实际上是:

page

3、 前加page,此法下RTF最后无空白页,但PDF有空白页。
4、 前加page此法下RTF、PDF最后都有空白页。
2.4.2. 条件分页、固定行分页
1、 任意条件分页,需要借助IF + 上面的break-after或者break-before,如:

page

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

page

2.4.3. 页眉页脚
1、 标准的页眉页脚,即单个页眉页脚,使用Word的功能即可。
2、 扩展的页眉页脚,可使用把主体部分“框”起来,凡是在这两个标记之外的东西,都将被当作页眉页脚。
2.4.4. 页码和页数
1、 可以用Word的“自动图文集”,在任意地方插入页码,这个是“自然页码”。
2、 如果在某种情况下想让页码从特定值开始,比如新的组页码重新编号,则需要借助命令,如在for-each后写:。这里的“1”,实际上也可以用数据文件中的XML元素来替换。
2.4.5. 末页、奇偶页不同
1、 Word可在页眉页脚部分实现首页不同或奇偶页不同,没法实现末页不同,即使借助代码控制,实际实现的也是末页布局不同,而非“页眉页脚”不同。

报表本身仅有一页时,则用
例子“AdvancedLast Page”,注意布局需要独立成页,即之前需要加分页符。
2、 以偶数页结束,主要目的是显示偶数页页眉页脚

如果仅显示空白页,则用
3、 以奇数页结束,主要目的是显示奇数页页眉页脚

如果仅显示空白页,则用
2.5. 使用多媒体元素
2.5.1. Word功能
可以使用公式、绘图(如组织结构图、线条等)、艺术字、剪贴画。
如果想通过代码在有限范围内控制这些对象,比如显示文字、缩放、旋转、移动、复制,可参考User Guide中的“Drawing, Shape and Clip Art Support”。
2.5.2. 复选框
插入复选框窗体域,因其选中代表True,不选代表False,需要我们输入条件表达式,如:0。
2.5.3. 下拉框
插入下拉框窗体域,定义下拉框的元素,并同样在“自己键入”内输入需要引用的XML标记如<%AREA_INDEX%>。这里要注意元素的顺序,因为是用顺序号和运行时的值进行匹配的,也就是XML数据中,AREA_INDEX是自然数1、2……。
2.5.4. 超链接
可以直接利用Word功能设置超链接,也可以在链接地址中,全部或部分引用XML数据文件中的标记,做到动态超链接:
{SUPPLIER_SITE_URL}或者
[url]http://huajhua.leiko.com:8000/OA_MEDIA/[/url]{CURRENCY_CODE}.gif
2.5.5. 图片
可以直接利用Word功能插入图片,也可以仅将该图片当作占位图,在图片的“设置图片格式”的网站标签页内的“可选文字”,输入真正的图片地址:
1、 来自网站的图片:url:{‘[url]http://localhost:8000/OA_MEDIA/forms_logo.gif’[/url]}。
2、 来自EBS的图片:url:{‘${OA_MEDIA}/forms_logo.gif’}。
3、 动态指定地址:url:{IMAGE_URL}。
4、 动态拼接的地址:url:{concat(SERVER,’/’,IMAGE_DIR,’/’,IMAGE_FILE)}。
5、 直接来自内容为BLOB的XML元素,仅用于“Data Templates”:



2.5.6. 图表
可使用Template Builder向导插入图表,类型有:条形图-垂直、条形图-水平、饼图、线形图。

向导生成的代码,可在图片的“设置图片格式”网站标签页内的“可选文字”里看到,我们可以做进一步修改

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/59792/viewspace-1053912/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-03-12

  • 博文量
    44
  • 访问量
    189985