Oracle XML Publisher
一、什么是XML?
XML (extensible Markup Language)
最简单的定义就是:「遵守特定规则的文字」,而这些规则跟HTML的规则很像,但更严谨一些,并加上些补强
1998/2由全球信息网协会(World Wide Wed Consortium;W3C) 提出与制定的一种规格
主要语法:Tag成对出现的语法,例如<Name> ….. </Name>
XML的批注与HTML语法相同,都是利用<!--批注内容-->来表示
XML(data+metadata), XSL(style sheet;presentation)
(一)、preparation(准备)
1.Microsoft Word
2.Java Runtime Environment (JRE) version 1.4 or later
3.Oracle XML Publisher Template Builder for Word
4.Add “XML Publisher Administrator” to your responsibility and Re-login
5.Concurrent Program Output Post Processor MUST active
6.Profile - FND: NATIVE CLIENT ENCODING MUST set to UTF8
(二)、修改report中的属性,设置encoding=“UTF-8”
(三)、生成XML文档
1、打开Template Builder.
- 导入XML Data
2、导入XML DATA
选择有Report Builder所生产的XML档
3.建立模板.
使用手动的方式在Word下建立如下模板
4.预览
预览:Template Builder->Preview->RTF
Tag-Group
- Template的建立过程中,Group的概念很重要。
Group:一笔资料就是为一个group.
Group可以嵌套循环。 - 例如:一张PO的资料包括header和line两部分。可以把这两部分Header和Line的资料看成是一个Group,同时也可以把Line的每一笔资料做为一个Group,嵌套在Header中。
<?for-each:<group name>?>做为一个Group的开头,放在资料的第一个Field的前面。
<?end for-each?>做为一个Group的结尾,放在资料的最后一个Field的后面。
Tag-<?<Field Name>?>
- <?<Field Name>?>为一Field的引用,<Field Name>栏位名必须与XML里面的一样,区分大小写。
- 在报表的执行过程中,<?<Field Name>?>将由XML里面对应的Element所取代。
Tag-<?sort:<Item_Column>?>
- <?sort:<Item_Column>?>为排序Tag
- 可以使用Group中的任何Element做为排序的准则。
- 如果需要多Element的排序,可以使用如下的方式
<?sort:<Item_Column1>?><?sort:<Item_Column2>?>
- 降序排序:<?sort:<Item_Column>; 'descending'?>
- 升序排序:<?sort:<Item_Column>; ‘ascending'?>
- 例如:<?sort:PO_NUM?> 将按PO单号排序
- 排序有分按Date/Text还是按Number排序。按Date/Text,400将排在50前面。
例如:<?sort:PO_NUM;'descending';data-type='text'?>
<?sort:PO_NUM;'ascending';data-type='number'?>
Tag-Page Break
- 可以使用<?split-by-page-break:?>进行分页
- 在Group的结束标志符<?end for-each?>前加上<?split-by-page-break:?>,当该group结束后将会自动分页,下一个group的资料将show在下一页里。
Tag-Section
- 有时一张report中包含了很多资料,比如一张report中包含多张PO的资料,而页码、页面加总的要根据不同的PO进行重置。如果页眉和页脚也使用了body里面的一些元素,这时候也需要重置。
使用<?for-each@section:group name?>可以达到这样的效果
Insert an image in the template
url也可以XML里面的一个元素(当这个元素为完整的图片URL):
url:{IMAGE_LOCATION}( IMAGE_LOCATION为group中一元素)
url中也可以是只是一个目录而已:
url:{’${OA_MEDIA}/image name’}( OA_MEDIA->为一个目录)
例如:url:{’${OA_MEDIA}/ORACLE_LOGO.gif’}
- 如果是多个截断的,也可以用concat这个function进行串联:
- 例如:
- url:{concat(SERVER,’/’,IMAGE_DIR,’/’,IMAGE_FILE
- url:{concat(’${OA_MEDIA}’,’/’,IMAGE_FILE
- 利用Report Builder生成.rtf报表,不需生成其layout,然后点选File ->Generate to File ->XML 生成XML文档
(四)、XML资料格式------ test.xml
- XML文档中的encoding为UTF-8,以减小出现乱码的可能性