科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Oracle XML Publisher与JDeveloper 10g集成

Oracle XML Publisher与JDeveloper 10g集成

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

2006 年 11 月发布 Oracle XML Publisher 是基于 XSL-FO 的 Oracle 报表工具,它包含一个 GUI 和一组核心 API 组件。

作者:中国IT实验室 来源:中国IT实验室 2007年10月7日

关键字: ORACLE

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共6页)

    下载并安装 Oracle 数据库 10g,然后创建一个包含示例模式的数据库实例。然后,在 OE 模式中使用下面所示的 SQL 脚本创建示例数据库表。

CREATE TABLE OE.Catalog(CatalogId VARCHAR(25) PRIMARY KEY, 
Journal VARCHAR(25), Publisher VARCHAR(25),
Edition VARCHAR(25), Title Varchar(45), Author Varchar(25));

INSERT INTO OE.Catalog VALUES('catalog1', 'Oracle Magazine', 'Oracle Publishing', 
'March-April 2006', 'Commanding ASM', 'Arup Nanda');

INSERT INTO OE.Catalog VALUES('catalog2', 'Oracle Magazine', 'Oracle Publishing', 
'May-June 2006', 'Tuning Your View Objects', 'Steve Muench');

INSERT INTO OE.Catalog VALUES('catalog3', 'Oracle Magazine', 'Oracle Publishing', 
'May-June 2006', 'Managing Oracle Portal', 'Aradhana Puri');

FO Processor Engine

    FO Processor Engine API 用于从 XML 文件和 XSLT 文件生成 PDF、Excel、HTML 或 RTF 报表。在本部分中,我们将创建一个 PDF 文档。PDF 报表的输入 XML 文档如下所示。

<?xml version="1.0" encoding="UTF-8"?>
<!--A Oracle Magazine Catalog--> 
<catalog  title="Oracle Magazine" publisher="Oracle Publishing"> 

<magazine date="March-April 2006"> 
<article>
<title>Using Bind Variables</title>
<author>Steve Muench</author>
</article>
<article>
<title>Commanding ASM</title>
<author>Arup Nanda</author> 
</article>
  
</magazine>
<magazine date="May-June 2006"> 
<article>
<title>Tuning Your View Objects</title>
<author>Steve Muench</author>
  
</article>
<article>
<title>Managing Oracle Portal</title>
<author>Aradhana Puri</author> 
</article>

</magazine>
</catalog>

    要生成 PDF 报表,您需要一个 XSL-FO 文件。XSL 规范中说明了格式化对象。这里,您将定义一个 XSLT 样式表,用于将 XML 文件转换为 XSL-FO 文件。随后,我们将使用 FO Processor Engine 将该文件转换为报表。

    XSL-FO 文件指定如何在报表中格式化数据,包括布局、字体和表。XSL-FO 文件中的元素位于带‘fo’前缀的命名空间中,该命名空间通过命名空间声明 xmlns:fo=http://www.w3.org/1999/XSL/Format 来指定。XSL-FO 文件的 DTD 可以从 fo.zip 中获得。

    您可以通过 XML 模式验证 XSL-FO 文件,方法是将 XSL-FO 文件的 DTD 转换为 XML 模式。Oracle JDeveloper 可以注册 XSL-FO 文件的 XML 模式,并生成或验证 XSL-FO 文件的实例。验证 XSL-FO 文件指的是检查 XSL-FO 文件的格式。表 1 列出了 XSL-FO 文件中的某些元素。

表 1. XSL-FO 文档元素

元素 说明

fo:root

XSL-FO 文档中的根元素

fo:layout-master-set

指定一组页面模板

fo:simple-page-master

页面布局

fo:page-sequence

指定页面模板的顺序

fo:flow

页面内容

fo:block

块内容

fo:list-block

指定列表

fo:list-item

列表项

fo:table

fo:table-column

表列

fo:table-header

表头

fo:table-body

表主体

fo:table-row

表行

fo:table-cell

表单元格

示例 XSLT 样式表 (catalog.xsl) 用于从输入 XML 文件 (catalog.xml) 生成 XSL-FO 文件。

catalog.xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.1" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="xml" version="1.0" 
omit-xml-declaration="no" indent="yes"
  <!-- ========================= -->
<!-- root element:catalog -->
  <!-- ========================= -->
<xsl:template match="/catalog">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="simpleA4" page-height="29.7cm"
		    page-width="21cm" margin-top="2cm" margin-bottom="2cm" 
margin-left="2cm" margin-right="2cm">
<fo:region-body
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="simpleA4">
<fo:flow flow-name="xsl-region-body">
<fo:block font-size="16pt" font-weight="bold" space-after="5mm">
Catalog:<xsl:value-of select="@title"
</fo:block>
<fo:block font-size="16pt" font-weight="bold" space-after="5mm">
Publisher:<xsl:value-of select="@publisher"
</fo:block>
<fo:block font-size="10pt">
           

<fo:table table-layout="fixed">
<fo:table-column column-width="4cm"
<fo:table-column column-width="4cm"
<fo:table-column column-width="5cm"
<fo:table-header>
<fo:table-row font-weight="bold"><fo:table-cell>
<fo:block>
<xsl:text>Date</xsl:text>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:text>Title</xsl:text>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:text>Author</xsl:text>
</fo:block>
</fo:table-cell>
</fo:table-row>

</fo:table-header>

<fo:table-body>
<xsl:apply-templates select="magazine"
</fo:table-body>
</fo:table>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
 
<xsl:template match="magazine">  
 
<xsl:for-each select="article">
<fo:table-row>
<fo:table-cell>
<fo:block>
<xsl:value-of select="../@date"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="title"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="author"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
  
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

 

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章