4.3.5 FO概览
   

FO(Formatting Object)又称为格式对象,本来是XSL标准中两大模块之一,但由于引来的争论颇多,成了XSL标准中的老大难问题,所以目前鲜有使用。现在XSL中实现转换功能的部分XSLT单独分离出来,独自成了推荐标准,剩下FO动向不明。既然如此,我们也就不费太多的篇幅在FO上,免得有朝一日FO被改得面目全非,读者还要费一番力气擦去这些得来的过时信息。

FO是直接面向内容的显示格式的。它定义了一个字典,或称之为符号集,字典中都是关于排版格式的一些关键字。再配上定义的XSL属性,便可表达出各种显示信息。

FO文档格式也是XML格式,遵从XML语法规范。它的命名空间是fo,声明如下:

<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:fo="http://www.w3.org/1999/XSL/Format"
  version="1.0">

FO的基本单位是称之为area的矩形区,area内可以包含文本、图象或其它的格式对象。在XSL中定义了五十多个格式对象,并定义了更多的属性,对象加属性可以描述各种显示版面。从与area的关系上看,FO可以分为三类:

  • 建立area的FO,这类FO可以新开辟一块area做文章
  • 得到area的FO,这类FO只用来找到所需的area
  • 包含在area之中的FO,主要用来描述显示方式,更贴近内容

从FO的功用来讲,又可以分为声明与版面描述FO、块级FO、内联级FO、表格FO、列表FO、链接与分枝FO、跨行FO、其它类FO。

好了,现在我们已经把XSL的总体框架和具体语法规则介绍给大家。XSL的基本思想无外乎是树匹配,很象程序员所擅长的一层套一层的函数调用;但它描述显示方式的功能又十分强大,要想得心应手地驾驭这匹千里马,就需要诸位勤学多用了。