继上一篇:使用java将xml格式化,本blog主要描述如何通过xslt将xml渲染为html(包含CSS),然后再
将html转为pdf.
如果你想了解更多xslt信息,请点击链接xslt。本程序直接使用javax.xml.transform.Transformer将howto.xsl通过数据源howto.xml渲染并保存为howto.html,然后通过第三方开源软件http://code.google.com/p/flying-saucer/将生成的XHTML转换为pdf.(注意:任何标签都必须闭合,否则flying-Saucer做XML解析会报错)
主要代码如下(程序已经上传):
howto.xml:
<?xml version="1.0"?> <products> <product href="http://www.playfield.com/text"> <name>Playfield Text</name> <price currency="usd">299</price> <description>Faster than the competition.</description> <version>1.0</version> </product> <product href="http://www.playfield.com/virus"> <name>Playfield Virus</name> <price currency="eur">199</price> <description> Protect yourself against malicious code. </description> <version>5.0</version> </product> <product href="http://www.playfield.com/calc"> <name>Playfield Calc</name> <price currency="usd">299</price> <description>Clear picture on your data.</description> <version>1.5</version> </product> <product href="http://www.playfield.com/db"> <name>Playfield DB</name> <price currency="cad">599</price> <description>Organize your data.</description> </product> </products>
howto.xsl:
<?xml version="1.0"?> <xsl:stylesheet version="2.0" xmlns:htm="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" omit-xml-declaration="yes"/> <xsl:template match="/products"> <html ang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Cascading Style Sheet</title> <link rel="stylesheet" type="text/css" href="table.css" title="Style"/> </head> <body> <table> <tr class="header"> <td>Name</td> <td>Price</td> <td>Description</td> </tr> <xsl:apply-templates/> </table> </body> </html> </xsl:template> <xsl:template match="product[position() mod 2 = 1]"> <tr class="odd"> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="price"/></td> <td><xsl:value-of select="description"/></td> </tr> </xsl:template> <xsl:template match="product"> <tr class="even"> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="price"/></td> <td><xsl:value-of select="description"/></td> </tr> </xsl:template> </xsl:stylesheet>
table.css:
.header { background-color: #999999; font-weight: bold; } .odd { background-color: normal; } .even { background-color: #dfdfdf; }
package sunflowerbbs.com; import javax.xml.transform.*; import org.xhtmlrenderer.pdf.ITextFontResolver; import org.xhtmlrenderer.pdf.ITextRenderer; import java.io.*; public class HowToXSLT { public static void main(String[] args) throws Exception{ try { TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory .newTransformer(new javax.xml.transform.stream.StreamSource( "howto.xsl")); transformer.transform(new javax.xml.transform.stream.StreamSource( "howto.xml"), new javax.xml.transform.stream.StreamResult( new FileOutputStream("howto.html"))); } catch (Exception e) { e.printStackTrace(); } convertHtmlToPdf("howto.html","product.pdf"); } public static boolean convertHtmlToPdf(String inputFile, String outputFile) throws Exception { OutputStream os = new FileOutputStream(outputFile); ITextRenderer renderer = new ITextRenderer(); String url = new File(inputFile).toURI().toURL().toString(); renderer.setDocument(url); // 解决中文支持问题 // ITextFontResolver fontResolver = renderer.getFontResolver(); // fontResolver.addFont("C:/Windows/Fonts/SIMSUN.TTC", // BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); // 解决图片的相对路径问题 // renderer.getSharedContext().setBaseURL("file:/D:/"); renderer.layout(); renderer.createPDF(os); os.flush(); os.close(); return true; } }
相关推荐
XML是一种标记语言,它允许数据以结构化的方式进行组织,而XSLT则是一种专门用于转换XML文档的语言,可以将XML数据转化为不同的格式,如HTML、PDF或纯文本,以适应不同的展示需求。 XML的核心概念包括元素、属性、...
1.4 xml与html的比较 4 1.4.1 xml将数据与显示分开 5 1.4.2 xml对文档的格式要求更加严格 6 1.4.3 xml有且只能有一个根元素 6 1.5 xml的编辑工具 7 1.6 xml文档 8 1.6.1 xml声明 9 1.6.2 文档类型声明 10 ...
1.4 xml与html的比较 4 1.4.1 xml将数据与显示分开 5 1.4.2 xml对文档的格式要求更加严格 6 1.4.3 xml有且只能有一个根元素 6 1.5 xml的编辑工具 7 1.6 xml文档 8 1.6.1 xml声明 9 1.6.2 文档类型声明 10 ...
2. **XSLT的使用**:XSLT是一种强大的样式表语言,用于将XML文档转换成其他格式,如HTML、PDF或纯文本。在本案例中,XSLT模板被用来把XML数据转换成一个HTML表格,使得数据可视化。 3. **HTML表格**:HTML表格是...
通过XSLT,开发者可以在客户端或服务器端将XML文档转换为其他格式的文档,如HTML或PDF等。这极大地增强了Web页面的灵活性,可以根据用户需求动态调整页面布局和样式,提高用户体验。 #### 四、CSS:美化界面设计 *...
XSLT能够将XML文档转换成其他格式,如HTML、PDF或纯文本,甚至可以转换为其他XML文档。它通过XPath(XML Path Language)来定位XML文档中的节点,并使用模板来定义转换规则。XSLT的核心概念包括模板、模式匹配和变量...
XSLT是一种强大的工具,用于将XML文档转换成不同的格式,如HTML、PDF或者其他的XML文档。XSLT基于XML语法,通过使用模板和模式匹配来定义转换规则。 1. **模板(Templates)**:模板是XSLT的核心,它定义了如何处理...
在软件开发中,JavaScript和XSLT(可扩展样式表语言转换)是一种常见的组合,用于将XML数据转换为HTML,以便在网页上呈现。本文将详细解释如何利用这两种技术实现XML到HTML的解析。 首先,XML(可扩展标记语言)是...
在Web开发中,JavaScript和XSLT(eXtensible Stylesheet Language Transformations)是两种强大的技术,它们可以用来处理XML数据并将其转化为HTML格式,以便在浏览器中显示。本文将详细探讨如何使用JavaScript与XSLT...
XSLT(eXtensible Stylesheet Language Transformations)则是处理XML文档的一种强大的样式表语言,主要用于将XML文档转换成其他形式,如HTML、PDF或者不同的XML结构。在本教程中,我们将深入探讨XSLT的基础知识及其...
XSLT(XSL Transformations)是XSL的一部分,专门用于将XML文档转换成其他格式,如HTML、PDF或文本。在这个个人网页项目中,XSLT可能被用来根据XML数据生成不同的页面视图,使页面布局和设计符合预期。 CSS...
XSLT(XSL Transformations)是用于转换XML文档的语言,它可以将XML数据转换成其他格式,如HTML、PDF或纯文本。XSLT使用模板匹配和模式规则来定义如何转换源XML文档。通过这种方式,XML数据可以根据需求转换成适合...
通过XSLT,可以将XML数据转换成其他格式,如HTML、PDF或CSV,以适应不同的展示需求。 XQuery是一种查询XML数据的语言,类似于SQL用于关系数据库。XQuery 2.0也是其第二个版本,增加了更多功能,如更好的类型系统、...
此时,XSLT(可扩展样式表语言转换)应运而生,它是一种用于转换XML文档的样式表语言,使得XML数据能够以更友好的形式呈现,如HTML或PDF。本文将深入探讨如何利用XSLT控制XML的样式,并详述XML与XSLT如何在HTML界面...
2. **XSLT转换**:XSLT用于将XML文档转换为其他格式,如HTML、PDF或新的XML结构。DIXML组件集成了XSLT引擎,使得在Delphi中进行复杂的XML到XML或XML到HTML的转换变得轻松简单。 3. **易于使用**:DIXML组件的API...
在提供的压缩包文件“Fop2Pdf”中,可能包含了XML数据文件、XSLT转换样式表、FOP的配置文件或者示例代码,帮助用户了解并实践XML到PDF的转换过程。通过研究这些文件,你可以学习如何设置XML结构,编写XSLT转换规则,...
通过XPath、XSLT和LINQ to XML等技术,开发者可以方便地操作和处理XML文档。 CSS(Cascading Style Sheets)则是用于描述HTML或XML(包括SVG、MathML等各种XML方言)文档样式的语言。CSS使开发者能独立于内容来定义...
XSLT是用于转换XML文档到其他XML文档或非XML格式(如HTML或PDF)的语言,它通过匹配模板来定义转换规则。XPath则是用于在XML文档中查找信息的语言,它提供了路径表达式来选取节点或者节点集。 XSLT是XSL的一部分,...
- XSLT用于转换XML文档,可以将一个XML文档转换为另一个XML文档或任何其他格式(如HTML、PDF等)。 #### 4. XPath - XPath是一种在XML文档中查找信息的语言,用于定位和提取特定节点。 ### Unicode编码 - **定义*...