xsl-fo
在本文中,我将说明为什么在需要处理为打印量身定制的XML文档时使用XML Stylesheet Language-Formatting Objects(称为XSL-FO)的工具。 我将描述在特定情况下在XML文档中包括格式化信息的好处。
格式化对象基础
XML被设计为在不同应用程序之间交换数据的一种可移植方式。 数据表示通常留给应用程序本身。 XML文档通常以有序的方式描述数据,其中缩进是唯一的格式。 在本节中,我将研究XSL-FO作为专门用来描述文档外观的XML词汇的使用。 我还提供了一些有关如何使用XSL-FO的技巧。
FO的定义及其在XSL中的作用
您可能已经知道,XSL代表可扩展样式表语言。 在定义语言的组成部分时,W3C的工作组明确指出XSL由两个主要部分组成:
- 用于转换XML文档的语言
- 用于指定格式语义的XML词汇表
XSL的第一个组件称为XSL转换或XSLT。 第二部分称为XSL-FO,或者简称为格式化对象(FO)。
XSLT用于通过将标记的数据转换为漂亮的文档来使XML文档可读。 通常,通过使用XSLT处理器应用样式表中定义的规则来完成文档转换。 此方法需要一个XML文档作为源,另一个具有格式信息(样式表)的文档,以及处理器。 但是,如果您想使用XML但又不想处理两个文档怎么办? 快速答案是:在文档中包含格式信息。
您可以使用FO在文档中包含格式信息。 尽管它不如XSLT流行,但是FO当然也很重要。 XSL-FO提供了一组标记,这些标记可用于定义文档对用户的显示方式。 使用FO,您可以定义页面布局,字体样式,颜色,图像渲染和许多其他设计属性。
如果您花时间阅读400多页的XSL-FO规范(请参阅参考资料 ),则W3C工作组定义的大量格式化对象可能会让您感到惊讶。 FO不限于印刷文件; 它为多媒体文件打开了一扇门。 如果400页太长,你的阅读口味,尝试优秀62页由Elliote生锈的哈罗德消化(参见相关主题 )。
有趣的是,在XSL规范中,W3C没有包含可用于验证FO文档的官方DTD(文档类型定义)。 幸运的是,RenderX生产了一个实验性FO DTD,可以帮助进行文档验证。
此时,可能会想到两个难题:何时使用XSL-FO,为什么使用? 我将探讨几种可能性。
FO的一些用途
首先,我将XML文档分为两类:
- 纯数据文档,仅用于应用程序之间的信息交换
- 人类将阅读的文件
关于第一类,仅在两个不同应用程序之间传输数据的XML文档通常根本不需要任何格式信息。 计算机程序并不关心它们处理的数据的外观。 有时甚至文档中包含的缩进也被认为是多余的。
属于第二类的文档通常在阅读之前使用样式表进行转换。 使用相同样式表准备的文档将看起来相似。 但是有时候您不想使用样式表,因为您想为相同类型的对象提供不同的表示形式。 这是FO可以提供帮助的地方:您可以使用FO作为专门的XML词汇来编写文档。
要使用所需的格式编写文档,可以使用许多可用的文字处理应用程序之一。 但是,请记住,它们每个都以专有格式存储文档。 因此,我可以在Windows下使用Microsoft Word编写文档,在Linux中使用StarSuite打开文档,然后阅读文本,但是格式总是与原始格式不同。 但是,如果可以使用FO将我的文档另存为XML文档,则无论使用哪种应用程序,我都希望保留格式信息。 使用FO的最大优点是,在任何平台或应用程序中,您只需要使用一种文档格式。