扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:中国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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者