XSL-FO 页面、流以及块
XSL-FO 的输出位于块区域中。
XSL-FO 页面(Page)、流(Flow)、块(Block)
内容块会流入页面中,然后输出到媒介
XSL-FO 输出部分通常被嵌套在 <fo:block>
元素中,<fo:block>
嵌套于 <fo:flow>
元素中,<fo:flow>
嵌套于 <fo:page-sequence>
元素中:
<fo:page-sequence> <fo:flow flow-name="xsl-region-body"> <fo:block> <!-- Output goes here --> </fo:block> </fo:flow> </fo:page-sequence>
块(<fo:block>
)可设置的属性
<fo:block>
是位于矩形框中的输出序列
<fo:block border-width="1mm"> 这个输出块周围有一条一毫米的边框。 </fo:block>
由于<fo:block>
区域是矩形框,所以可共享许多公共的区域属性:
- space before 和 space after
- margin
- border
- padding
- space before
图示:
-
space before 和 space after 是块与块之间起分割作用的空白。
-
margin 是块外侧的空白区域。
-
border 的区域外部边缘的矩形。其四个边均可有不同的宽度。它也可被填充为不同的颜色和背景图像。
-
padding 是位于内容区域与边框之间的区域。
-
内容 区域可包含实际的内容,比如文本、图片、图形等等。
<fo:block>
外间距类属性
- margin
- margin-top
- margin-bottom
- margin-left
- margin-right
<fo:block>
边框属性
<fo:block>
边框样式属性:
- border-style
- border-before-style
- border-after-style
- border-start-style
- border-end-style
- border-top-style ((等同于 border-before)
- border-bottom-style (等同于 border-after)
- border-left-style (等同于 border-start)
- border-right-style (等同于 border-end)
<fo:block>
边框颜色属性:
- border-color
- border-before-color
- border-after-color
- border-start-color
- border-end-color
- border-top-color (等同于 border-before)
- border-bottom-color (等同于 border-after)
- border-left-color (等同于 border-start)
- border-right-color (等同于 border-end)
<fo:block>
边框宽度属性:
- border-width
- border-before-width
- border-after-width
- border-start-width
- border-end-width
- border-top-width (等同于 border-before)
- border-bottom-width (等同于 border-after)
- border-left-width (等同于 border-start)
- border-right-width (等同于 border-end)
<fo:block>
内间距属性
- padding
- padding-before
- padding-after
- padding-start
- padding-end
- padding-top (等同于 padding-before)
- padding-bottom (等同于 padding-after)
- padding-left (等同于 padding-start)
- padding-right (等同于 padding-end)
<fo:block>
背景相关属性
- background-color
- background-image
- background-repeat
- background-attachment (scroll 或者 fixed)
<fo:block>
字体相关属性:
<fo:block>
是可被单独样式化的输出序列:
<fo:block font-size="12pt" font-family="sans-serif"> This block of output will be written in a 12pt sans-serif font. </fo:block>
<fo:block>
字体属性:
- font-family
- font-weight
- font-style
- font-size
- font-variant
<fo:block>
内容文本/段落相关属性:
- text-align
- text-align-last
- text-indent
- start-indent
- end-indent
- wrap-option (定义自动换行,word wrap)
- break-before (定义分页符,page breaks)
- break-after (定义分页符,page breaks)
- reference-orientation (定义
90
内的文字旋转)
<fo:block>
范例
<?xml version="1.0" encoding="UTF-8"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="A4"> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="A4"> <fo:flow flow-name="xsl-region-body"> <fo:block font-size="14pt" font-family="verdana" color="red" space-before="5mm" space-after="5mm">简单教程 </fo:block> <fo:block text-indent="5mm" font-family="verdana" font-size="12pt" space-before="5mm" space-after="5mm"> At 简单教程 you will find all the Web-building tutorials you need, from basic HTML and XHTML to advanced XML, XSL, Multimedia and WAP. </fo:block> </fo:flow> </fo:page-sequence> </fo:root>
结果:
简单教程
At 简单教程 you will find all the Web-building tutorials you need, from basic HTML and XHTML to advanced XML, XSL, Multimedia and WAP.
请看上面的例子
如果要生成一个拥有许多标题和段落的文档,那么将会需要非常多的代码。
通常,XSL-FO 文档不会像我们刚才所做的那样对格式化信息和内容进行组合
通过 XSLT 的些许帮助,我们就可以把格式化信息置入模板,然后编写出更纯净的内容
您会在本教程后面的章节学习到如何使用 XSLT 模板来组合 XSL-FO