XSL-FO 列表学习笔记

XSL-FO(Extensible Stylesheet Language Formatting Objects)是一种用于描述和格式化 XML 数据的标记语言。本文将着重介绍 XSL-FO 中列表的使用方法。

1. 有序列表

1.1. 默认样式

在 XSL-FO 中,使用<fo:list-block>标签来表示列表,<fo:list-item>标签表示列表项,其中有序列表需要设置list-style-type属性为decimal。默认情况下,有序列表的样式是数字后面跟一个英文句点“.”,如下所示:

xmlCopy Code
<fo:list-block> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <fo:block>1.</fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>First item</fo:block> </fo:list-item-body> </fo:list-item> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <fo:block>2.</fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>Second item</fo:block> </fo:list-item-body> </fo:list-item> </fo:list-block>

1.2. 自定义样式

如果需要自定义有序列表的样式,可以使用<fo:list-item-label>标签来设置标签内容和样式。例如,可以使用 Roman 数字或字母替代默认的阿拉伯数字。以下代码展示了如何将有序列表的样式修改为大写罗马数字:

xmlCopy Code
<fo:list-block> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <fo:block font-family="serif" font-size="12pt" font-weight="bold"> <xsl:number format="I" /> <fo:inline font-size="9pt">(</fo:inline> <fo:inline font-size="10pt">)</fo:inline> </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>First item</fo:block> </fo:list-item-body> </fo:list-item> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <fo:block font-family="serif" font-size="12pt" font-weight="bold"> <xsl:number format="I" /> <fo:inline font-size="9pt">(</fo:inline> <fo:inline font-size="10pt">)</fo:inline> </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>Second item</fo:block> </fo:list-item-body> </fo:list-item> </fo:list-block>

2. 无序列表

2.1. 默认样式

无序列表使用list-style-type属性为disc表示默认圆点样式,例如:

xmlCopy Code
<fo:list-block> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <fo:block></fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>First item</fo:block> </fo:list-item-body> </fo:list-item> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <fo:block></fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>Second item</fo:block> </fo:list-item-body> </fo:list-item> </fo:list-block>

2.2. 自定义样式

同样地,可以使用<fo:list-item-label>标签来自定义无序列表的样式。以下代码展示了如何将无序列表的样式修改为定制图标:

xmlCopy Code
<fo:list-block> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <fo:block font-family="ZapfDingbats" font-size="12pt"></fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>First item</fo:block> </fo:list-item-body> </fo:list-item> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <fo:block font-family="ZapfDingbats" font-size="12pt"></fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>Second item</fo:block> </fo:list-item-body> </fo:list-item> </fo:list-block>

以上是 XSL-FO 中列表的学习笔记,希望对您有所帮助。