XSL-FO是用于格式化XML数据的语言,全称为Extensible Stylesheet Language Formatting Objects(格式化对象的可扩展样式表语言),是W3C参考标准,现在通常叫做XSL。

什么是 XSL-FO

XSL-FO 是用于格式化 XML 数据的语言
XSL-FO 指可扩展样式表语言格式化对象(Extensible Stylesheet Language Formatting Objects)
XSL-FO 是一个 W3C 推荐标准
XSL-FO 目前通常被称为 XSL

通常被称为 XSL

为什么会存在这样的混淆呢?XSL-FO 和 XSL 是一回事吗?
可以这么说,不过我们需要向您作一个解释:
样式化(Styling)是关于转换信息格式化信息两方面的信息。在万维网联盟编写他们的首个 XSL 工作草案的时候,这个草案包括了有关转换和格式化 XML 文档的语言语法。
后来,XSL 工作组把这个原始的草案分为独立的标准:
XSLT,用于转换 XML 文档的语言
XSL 和 XSL-FO,用于格式化 XML 文档的语言
XPath,是通过元素和属性在 XML 文档中进行导航的语言
XSL-FO 使用矩形框(区域)来显示输出。
 

XSL-FO 区域编辑

XSL 格式化模型定义了一系列的矩形区域(框)来显示输出。
所有的输出(文本、图片,等等)都会被格式化到这些框中,然后会被显示或打印到某个目标媒介。
让我们研究一下下面这些区域:[1] 
  • Pages(页面)
  • Regions(区)
  • Block areas(块区域)
  • Line areas(行区域)
  • Inline areas(行内区域)

XSL-FO Pages(页面)

XSL-FO 输出会被格式化到页面中。打印输出通常会分为许多分割的页面。浏览器输出经常会成为一个长的页面。
XSL-FO Pages(页面)包含区(Region)。

XSL-FO Regions(区)

每个 XSL-FO 页面均包含一系列的 Regions(区):
  • region-body(页面的主体)
  • region-before(页面的页眉)
  • region-after(页面的页脚)
  • region-start(左侧栏)
  • region-end(右侧栏)
XSL-FO Regions(区)包含块区域(Block Area)。

XSL-FO Block Areas(块区域)

XSL-FO Block Areas(块区域)定义了小的块元素(通常由一个新行开始),比如段落、表格以及列表。
XSL-FO Block Areas(块区域)包含其他的块区域,不过大多数时候它们包含的是行区域(Line Area)。

XSL-FO Line Areas(行区域)

XSL-FO Line Areas(行区域)定义了块区域内部的文本行。
XSL-FO Line Areas(行区域)包含行内区域(Inline Area)。

XSL-FO Inline Areas(行内区域)

XSL-FO Inline Areas(行内区域)定义了行内部的文本(着重号、单字符、图像,等等)。
 

XSL-FO 文档

XSL-FO 文档是带有输出信息的 XML 文件。
XSL-FO 文档是带有输出信息的 XML 文件。它们包含着有关输出布局以及输出内容的信息。
XSL-FO 文档存储在以 .fo 或 .fob 为后缀的文件中。以 .xml 为后缀存储的 XSL-FO 文档也很常见,这样做的话可以使 XSL-FO 文档更易被 XML 编辑器存取。
XSL-FO 文档的结构
XSL-FO 的文档结构类似这样:
<?xml version="1.0" encoding="ISO-8859-1"?>
<fo:root xmlns:fo="/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="A4">
<!-- Page template goes here -->
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4">
<!-- Page content goes here -->
</fo:page-sequence>
</fo:root>结构解释
XSL-FO 文档属于 XML 文档,因为也需要以 XML 声明来起始:
<?xml version="1.0" encoding="ISO-8859-1"?><fo:root> 元素是 XSL-FO 文档的根元素。这个根元素也要声明 XSL-FO 的命名空间:
<fo:root xmlns:fo=org/1999/XSL/Format">
<!-- 此处是 XSL-FO 文档的内容 -->
</fo:root><fo:layout-master-set> 元素含有一个或多个页面模板:
<fo:layout-master-set>
<!-- 此处是所有的页面模板 -->
</fo:layout-master-set><fo:simple-page-master> 元素包含一个单一的页面模板。每个模板须有一个唯一的名称(master-name):
<fo:simple-page-master master-name="A4">
<!-- 此处是某一个页面模板 -->
</fo:simple-page-master>一个或多个 <fo:page-sequence> 元素可描述页面的内容。master-reference 属性使用相同的名称来引用 simple-page-master 模板:
<fo:page-sequence master-reference="A4">
<!-- 此处是页面内容 -->
</fo:page-sequence>注释:master-reference 的值 "A4" 实际上并没有描述某个预定义的页面格式。它仅仅是一个名称。您可以使用任何名称,比如 "MyPage"、"MyTemplate" 等等。
 

XSLFO 对象

对象
描述
basic-link
定义一个链接的起始资源
bidi-override
Overrides the default Unicode BIDI direction
block
定义一个输出块(比如段落和标题)
block-container
定义一个块级的引用区域(reference-area)
character
定义一个字符,该字符会被映射为供呈现的字形
color-profile
定义样式表的一个颜色配置文件
conditional-page-master-reference
规定一个当所定义的条件成立时使用的page-master
declarations
组合针对某个样式表的全局声明
external-graphic
用于图像数据位于XML结果树之外的某个图形
float
典型的用法是,在页面起始位置的某个单独的区域放置一幅图片,或者把一幅图片放置到一侧,而内容则流动至图片的旁边。
flow
包含所有被输出到页面的元素
footnote
定义在页面的region-body内部的一个脚注
footnote-body
定义脚注的内容
initial-property-set
格式化<fo:block>的第一行
inline
通过背景或者将其包围在一个边框中,来格式化文本的某个部分
inline-container
定义一个行内的引用区域(inline reference-area)
instream-foreign-object
用于行内图形(inline graphics)或用于普通对象,其中对象的数据作为<fo:instream-foreign-object>的后代存在。
layout-master-set
存有所有用在文档中的master
leader
用来生成"."由内容表格中的页码来分隔标题,或者创建表单中的输入域,或者创建水平线
list-block
定义列表
list-item
包含列表中的每个项目
list-item-body
包含列表项的内容或主体
list-item-label
包含列表项的标号(有代表性的是数据、字符等等)
marker
与fo:retrieve-marker使用来创建连续的页面或页脚
multi-case
包含 XSL-FO对象的每个供选择的子树(在<fo:multi-switch>内部)。父元素<fo:multi-switch>会选择显示那个选项并隐藏其余的选项。
multi-properties
用来在两个或更多的属性集(property-sets)间转换
multi-property-set
规定一个可供选择的属性集,这个属性集会被根据用户代理的状态来进行应用。
multi-switch
存有一个或多个<fo:multi-case>对象,并控制它们之间的切换(通过<fo:multi-toggle>激活)
multi-toggle
用来切换到另一个<fo:multi-case>
page-number
表示当前的页面
page-number-citation
为页面引用页码,此页面包含首个由被引用对象返回的标准区域。
page-sequence
一个针对页面输出元素的容器。在其中一个<fo:page-sequence>对象针对每个页面布局。
page-sequence-master
规定使用哪个simple-page-master,以及使用次序。
region-after
定义页脚
region-before
定义页眉
region-body
定义页面主体
region-end
定义页面的右侧栏
region-start
定义页面的左侧栏
repeatable-page-master-alternatives
定义一套simple-page-master的副本
repeatable-page-master-reference
规定一个简单的simple-page-master的副本
retrieve-marker
与<fo:marker>一同使用来创建连续页眉或者页脚
root
XSL-FO文档的根(顶)节点
simple-page-master
定义页面的尺寸和形状
single-page-master-reference
规定用在页面序列的某个给定的点的一个
static-content
包含在许多页面上重复的静态内容(比如页眉和页脚)
table
格式化一个表格的表格式的材料
table-and-caption
格式化一个表格及其标题
table-body
表格行和表格单元的容器
table-caption
包含一个表格的标题
table-cell
定义表格单元
table-column
格式化表格的列
table-footer
定义表格的页脚
table-header
定义表格的页眉
table-row
定义表格的行
title
为页面序列定义一个标题
wrapper
为一组XSL-FO对象规定继承属性

xsl -fo 了解的更多相关文章

  1. BIP_BI Pubisher的SQL/XSL/FO扩展函数应用(概念)

    2014-12-01 Created By BaoXinjian

  2. C# 开源框架

    一.AOP框架        Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种 ...

  3. C#开源系统大汇总(个人收藏)

    C#开源系统大汇总 一.AOP框架        Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖 ...

  4. [转]C#常用开源类库收集

    .net PDF 类库 PDFsharp PDFsharp是一款可以让.NET框架支持的任何语言很容易的创建PDF文件的类库. ASP.NET FO PDF FO PDF 是一款C#编写类似于ASP. ...

  5. C#常用开源类库

    一.AOP框架        Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种 ...

  6. .NET平台下开源框架

    一.AOP框架Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面(asp ...

  7. C#开源系统大汇总

    一.AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面(as ...

  8. C#开源资源项目

    一.AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面(as ...

  9. C#开源系统大汇总(转)

    一.AOP框架        Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种 ...

随机推荐

  1. 《图解Http》 HTTPS 安全协议

    相关博客:https://www.cnblogs.com/chentianwei/p/9374341.html  (讲的更明白,有图) HTTPS 7.1http的缺点 使用明文,内容会被窃听. 不验 ...

  2. Lightoj Halloween Costumes

    题意:给出要n个时间穿的服装.服装脱下就不能再穿.问最少要准备多少? dp[i][j]表示i到j之间最少花费.如果n=1(n指长度),肯定结果为1,n=2时,也很好算.然后n=3的时候dp[i][j] ...

  3. Oracle 使用GSON库解析复杂json串

    在前文中讲到了如何使用JSON标准库解析json串,参考: Oracle解析复杂json的方法(转) 现补充一篇使用GSON库在Oracle中解析复杂json的方法. GSON串的使用教程参考官方文档 ...

  4. IOS8-人机界面指南

    [ISUX转译]iOS 8人机界面指南(一):UI设计基础 糖箔糊2014.09.23 文章索引 1.1 为iOS而设计(Designing for iOS) 1.1.1 以内容为核心(Defer t ...

  5. STM 软件事务内存——本质是为提高并发,通过事务来管理内存的读写访问以避免锁的使用

    对Java程序员来说,我们对面向对象的编程(OOP)自然都是烂熟于胸的,但语言也极大地影响了我们构建面向对象应用程序的方式.(现在的OOP已经和Alan Kay当初创造这个词时候的初衷大不相同了,他的 ...

  6. ArrayList与List<T>笔记

    ArrayList与List<T>笔记 ArrayList是在System.Collections命名空间的一个类, 通过Add的方法添加一个项, 当进到这个类的元数据时, 可以看到这个方 ...

  7. L1-012 计算指数

    真的没骗你,这道才是简单题 —— 对任意给定的不超过 10 的正整数 n,要求你输出 2​n​​.不难吧? 输入格式: 输入在一行中给出一个不超过 10 的正整数 n. 输出格式: 在一行中按照格式  ...

  8. 借鉴seisman安装软件时的文件放置选择

    对于大型的软件包的安装来说: 当下载成功一个软件的压缩包后: tar -xvf xxxx.tgz ./configure --prefix=/opt/xxxx make sudo make insta ...

  9. PostgreSQL误删操作怎么处理

    方式一: PostgreSQL中没有Oracle的闪回机制,只有更加复杂的PITR恢复机制,这要求数据库有全量备份和增量备份,否则无法进行回滚. 方式二: 虽然PostgreSQL有延迟复制的技术,在 ...

  10. C++基础之 成员变量初 始化赋值

    摘要: C++成员变量 初始化赋值 你都清楚吗?还有好多坑,好多细节也不知道... 今天在写一个类的时候,由于该类的一个成员变量是引用,所以初始化出现了问题,查了一下之后,才发现,原来引用的初始化和c ...