XSL-FO 基础知识(一)

本教程介绍的是什么 第 1 页(共5 页)


XSL 格式化对象规范是 W3C 的正式建议,通常称其为 XSL-FO,XSL-FO 定义了许多 XML 标记,这些标记描述了应如何显示内容。尽管 XSL-FO 包含描述如何以非打印格式显示文本(如口语)的元素,本教程还介绍如何创建可移植文档格式(PDF)文件 ― XSL-FO 最常见的用法。

本教程简要概括了 XSL-FO 文档结构和定义页面大小、字体和页边距的元素。它还介绍了文本与图形格式化的基本知识,并演示了将格式化对象文件转换成 PDF 的基本原理。可下载的代码样本使得改写样本以自行试验变得简单。

当您学完这篇介绍性的教程时,您将理解 XSL-FO 是什么以及它是如何工作的。您将能够改写已提供的基本样本以创建自己的简单 FO 文档。您将准备好继续学习本系列中的第二篇教程,以了解如何具体地控制文本格式化,以及如何将 HTML 元素转换为格式化对象。然后您将能够创建自己的使用格式化对象生成高质量可打印文档的 XML 应用程序。

本教程假定您已了解可扩展标记语言(XML),而且了解如何使用它和它的相关技术,如 XML 样式表语言-转换(XML Stylesheet Language-Transformation,XSLT)。虽然您不需要知道有关 XSL-FO 的任何事情,但为了使用格式化对象,您需要一点使用 XSLT 的经验。

用于示例的工具是用 Java 代码编写的,但使用它们不需要了解 Java 语言 。

关于软件和标准需要知道些什么 第 3 页(共5 页)


尽管您可以使用其它 XSL-FO 显示引擎,但本教程是针对 Apache XML Project 的 FOP(Formatting Objects to PDF,格式化对象转换为 PDF)转换程序编写的。本教程中的示例适用于 FOP V0.20.4,该版本于 2002 年 7 月 5 日发布。如果用其它版本的 FOP 试验这些示例,则这些示例能否起作用是个未知数。XSL-FO 规范于 2001 年 10 月 15 日成为 W3C 的正式建议书;FOP 工具支持最终规范中的绝大部分内容。

我们在 developerWorks 上使用 FOP 工具有两个原因:

  • 它是用 Java 语言编写的,所以它可以在所有我们所关注的平台上运行。
  • 它是免费和开放源码的产品,所以任何人都用得起。

如果您想深入研究 XSL-FO,可以到 W3C 的站点直接查阅该规范的源文档(请参阅参考资料)。要知道这是 W3C 最长的文档之一(大约 400 页),尽管该文档中大多数都是 XSL-FO 标记集中众多元素和属性的参考信息。参考部分 ― 特别是附录 B、C 和 D ― 对于查找特性名称和值是非常有用的。请记住,在撰写本文的时候,FOP 并不完全支持 XSL-FO 规范。工具可能不支持该规范所定义的某些特性的名称和值,或者可能用略微不同的名称和值支持这些特性。


学习本教程需要什么工具,应如何配置这些工具 第 4 页(共5 页)


要完成本教程中的练习,您要有 Java 开发者工具箱(Java Developer's Kit,JDK)V1.3 或更高版本和 Apache XML 项目的 FOP 软件包。可以在 xml.apache.org/dist/fop 找到 FOP 软件包。下载最新版本并将其解压缩。

一旦安装了 JDK 和 FOP,就需要设置类路径。

如果想使用本教程中的示例,而又不想总记着改写这些示例,请将 FOP 软件包放置在 c:/fop-0.20.4rc 中,然后如下设置类路径(当然,所有的项都在一行;分行只是为了适应这里的文本列宽):


set classpath=.;c:/fop-0.20.4rc/build/fop.jar;c:/fop-0.20.4rc/
lib/avalon-framework-cvs-20020315.jar;c:/fop-0.20.4rc/lib/bati
k.jar;c:/fop-0.20.4rc/lib/xalan-2.3.1.jar;c:/fop-0.20.4rc/lib/
xercesImpl-2.0.1.jar;c:/fop-0.20.4rc/lib/xml-apis.jar;

如果您在别的位置解压缩 FOP 软件包,那么您需要相应地更改命令。如果正在运行 Linux,则使用命令 export classpath=/usr/bin/fop-0.20.4rc/build/fop.jar:/usr/bin/fop-...,诸如此类。

关于作者 第 5 页(共5 页)



Doug Tidwell 是 developerWorks 计算机传教士,帮助人们使用新技术来解决问题。他已经为全世界数万开发人员讲解过 Web 服务和 XML,并确实令其中的许多人受到启发。他还是 O'Reilly XSLT 的作者,以及 O'Reilly Programming Web Services with SOAP 的合著者,这两本书都是推荐给您亲朋好友的绝佳礼物。

在一次难得的与名人的较量中,他和女儿 Lily 在北卡罗来纳州博览会的一场 Whack-a-Mole 比赛中惨败给奥运会金牌得主玛里安・琼斯(Marion Jones):

  • 爸爸:怎么比赛这么快就完了?
  • Lily:不!没人能那么快![父亲望过去,看到获胜的对手]
  • 爸爸:来,Lily,我们走吧……

可以通过 dtidwell@us.ibm.com 与他联系。

 

<think>嗯,用户问的是如何将Word文档简单转换为XSL-FO模板。首先,我需要回想XSL-FO是什么。XSL-FO(可扩展样式表语言格式化对象)主要用于格式化XML数据,生成PDF或其他打印格式的文件。而用户提到的是将Word转成XSL-FO,这可能涉及到将Word的结构和内容转换为XSL-FO的格式,以便后续生成PDF或其他输出。 接下来,用户想要个简单的方法。可能需要考虑常见的转换工具或步骤。直接转换的话,可能需要中间格式。比如,Word文档另存为XML,然后用XSLT转换。或者有没有现成的工具可以直接转换? 首先,用户可能不知道XSL-FO的结构,所以需要先解释XSL-FO的基础。或者用户可能已经了解,但需要转换方法。所以,在回答中可能需要先简要说明XSL-FO是什么,但用户的问题更关注转换步骤。 然后,步骤可能包括:将Word文档保存为XML,然后使用XSLT转换这个XMLXSL-FO。或者有没有其他方法,比如使用Apache POI或者些开源库来处理? 另外,可能需要考虑商业软件,比如Antenna House或RenderX,它们可能有转换工具。但用户可能想要免费或简单的方法。 另个思路是,Word文档可以另存为HTML,然后从HTML转XSL-FO,不过HTML到XSL-FO也需要转换工具或者XSLT脚本。 需要验证这些步骤是否可行。比如,将Word保存为XML,然后用XSLT处理。不过Word的XML结构比较复杂,可能自定义了很多命名空间,直接转换可能需要复杂的XSLT脚本。 有没有现有的XSLT模板可以将Word的XML转为XSL-FO?可能需要搜索下,或者用户需要自己编写XSLT,这可能对用户来说比较困难。 或者,是否存在些中间软件,比如pandoc,是否支持XSL-FO的输出?查下pandoc支持的格式,目前pandoc可能不支持直接转XSL-FO,但可以转成LaTeX,然后再转XSL-FO?这可能增加复杂度。 另种方法是,使用LibreOffice,将Word文档转成ODT,再导出为XSL-FO?不确定是否可行,可能需要插件或扩展。 可能需要分步骤说明:首先将Word另存为XML,然后使用XSLT转换,但需要用户有定的XSLT知识。或者推荐工具,比如docx2xslfo,这是个开源工具吗?需要确认是否存在这样的工具。 另外,用户可能需要的是模板,所以可能需要手动调整XSL-FO的结构,以匹配Word文档的样式。比如,标题、段落、列表等对应到XSL-FO的块、内联元素等。 总结可能的步骤:1. 将Word保存为XML;2. 使用XSLT转换为XSL-FO;3. 可能需要手动调整样式。或者使用第三方工具自动化这个过程。 需要检查是否存在现成的转换工具,比如Apache FOP是否支持从Word转换,但FOP主要是将XSL-FO转成PDF,不是直接处理Word。可能需要结合其他工具。 因此,回答应该分步骤,先说明基本方法,再提及可能的工具和注意事项,比如需要处理样式映射,或者使用商业软件简化流程。</think>以下是将Word文档转换为XSL-FO模板的简单方法及步骤: --- ### 、基础概念 **XSL-FO** 是种基于XML的页面描述语言,主要用于将结构化内容(如XML)转换为PDF/打印格式。Word文档本身是二进制格式(.docx本质是ZIP包),需要中间转换步骤。 --- ### 二、转换步骤 #### 方法1:通过Word XML + XSLT转换 1. **将Word另存为XML** - 打开Word文档 → 另存为 → 选择 **"Word XML Document (*.xml)"** 格式。 2. **编写XSLT转换脚本** - Word的XML结构复杂(含`w:document`等命名空间),需编写XSLTXML标签映射到XSL-FO元素。 - 示例片段: ```xml <xsl:template match="w:p"> <fo:block> <xsl:apply-templates/> </fo:block> </xsl:template> ``` 3. **执行转换** 使用工具如 **Saxon-HE** 或在线XSLT处理器转换XMLXSL-FO: ```bash java -jar saxon-he.jar -s:input.xml -xsl:word2fo.xsl -o:output.fo ``` #### 方法2:使用现成工具(推荐) - **docx2xslfo** 开源工具,支持将.docx直接转为XSL-FO(需Java环境): ```bash java -jar docx2xslfo.jar input.docx -fo output.fo ``` - **Antenna House/RenderX** 商业软件提供Word到XSL-FO的插件或转换服务。 #### 方法3:通过中间格式(HTML/Markdown) 1. 将Word另存为**HTML**或导出为**Markdown**。 2. 使用工具(如Pandoc)转XSL-FO: ```bash pandoc input.html -t xslfo -o output.fo ``` --- ### 三、注意事项 1. **样式映射** Word的字体、段落等样式需手动映射到XSL-FO属性(如`font-family`, `text-indent`)。 2. **复杂内容** 表格、图片需特殊处理,例如: ```xml <fo:external-graphic src="url(image.png)"/> ``` 3. **验证输出** 用Apache FOP或RenderX引擎将XSL-FO转换为PDF,检查排版是否符合预期。 --- ### 四、推荐工具链 1. **免费方案** `Word → docx2xslfoXSL-FO → Apache FOPPDF` 2. **高效方案** `Word → Antenna House插件 → 直接生成PDF/XSL-FO` 通过以上步骤,可快速实现Word到XSL-FO的转换,但复杂文档可能需要手动调整XSL-FO模板。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值