用XSF-LO提高XML文档的灵活性和多目标性

ZDNet软件频道 时间:2003-04-11 作者:BUILDER.COM |  我要评论()
本文关键词:
扩展样式表语言格式对象是一个用来描述XML文档规划(layout)的XML应用程序。换句话说,它使得XML文档在非技术人员的角度看来变得更加漂亮和易读。
本文译自Builder.com扩展样式表语言格式对象(Stylesheet Language Formatting Objects,XSL-FO)是一个用来描述XML文档规划(layout)的XML应用程序。换句话说,它使得XML文档在非技术人员的角度看来变得更加漂亮和易读。XSL-FO还可以提供了根据不同目的把同一个XML文档转化成不同格式的功能。

例如,假设有一个与探险有关的杂志《业余探险家》。当首次刊出某篇文章时,它是按照网页的形式组织的,其导航信息在页眉或者页脚。为了方便,该文章甚至可能分解到多个网页中去。尽管这样作之后,在网络上浏览该文章就很方便了,但是《业余探险家》杂志社想把该文章收录到纸面版的杂志上却有些麻烦。你可以为这两篇内容相同的文章建立两个或者多个文档,但是用XSL-FO来把该文章的XML文档按照目的任意组织格式却方便的多。

想象一下网络板《业余探险家》中的某篇文章,文章所在网页应该会有许多链接和广告。该文章本身应该是像清单A中XML文档那样,是用扩展样式表语言转换(Extensible Stylesheet Language Transformations ,XSLT)组织该网页的。

尽管对管理网络板杂志的人们来说,这样作是最好不过了,但是处理杂志的纸面版的工作人员就没有这么好的运气了。这就是为什么我们使用XSL-FO的原因。XSL-FO的目标就是为打印而格式化XML,这与IBM公司的AFP为打印而格式化mainframe文件的目标有很大的相似之处。例如,XSF-LO可以格式化文本以产生适合11英寸×8.5英寸纸张的输出文件。一个如清单B所示的XSL文档,可以重新格式化清单A中的XML文档。

它是如何工作的?

清单A中的XML文档以及清单B中XML文档作为XSLT引擎的输入。XSLT引擎产生如清单C所示的XSL-FO 文档。然后,该文档输入到XSL-FO格式化器,产生一个可打印文档。

美中不足之处

这个方法听起来很酷,但它也不是白璧无瑕的。最显著的就是,对对大多数浏览器来说,XSL-FO仅仅是另一个XML文档而已。如果Web上没有某些其它工具,产生XSL-FO文档的整个过程都是毫无意义的。《业余探险家》杂志社为了获得文章的纸面格式,它需要一个FOP。FOP指得是PDF格式化对象处理器(Processor or Formatting Objects to PDF)——这两种称呼方式都可以。Apache Project产生一个很符合我可以接收价位的FOP:它是免费的。

在FOP的帮助下,清单C中的XSL-FO可以产生一个既可以在线浏览、又可用来打印的PDF文件。我建议在打印PDF文件之前,不妨在线仔细通览该文件——因为正确产生文档终究是一件令人愉快的事情。

结论

尽管XSL-FO的W3C要求尚不十分牢固,但该技术可能让你免除许多烦杂的工作。当它与XSLT配合使用时,甚至可以免除从SQL数据库产生报告这一苦差事。



责任编辑:炒饭

欢迎评论或投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134