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 中列表的学习笔记,希望对您有所帮助。