扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:中国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 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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。