XSL-FO:将<fo:page-number/>格式化为罗马数字
实现XSL-FO页码转罗马数字的方法
XSL-FO的<fo:page-number>确实没有直接设置罗马数字格式的属性,需要借助XSLT的<xsl:number>元素来实现,具体操作如下:
- 直接替换
<fo:page-number/>,用<xsl:number>生成格式化后的罗马数字页码:- 小写罗马数字(i、ii、iii...):指定
format="i" - 大写罗马数字(I、II、III...):指定
format="I"
- 小写罗马数字(i、ii、iii...):指定
示例代码(页脚中添加小写罗马页码):
<fo:static-content flow-name="xsl-region-after"> <fo:block text-align="center" font-size="10pt"> <xsl:number value="current-page()" format="i"/> </fo:block> </fo:static-content>
如果需要引用其他页面的页码并转为罗马数字,可以结合<fo:page-number-citation>的ref-id属性,先获取目标页面的页码值再格式化:
<fo:block> 详见第 <xsl:number value="fo:page-number-citation(ref-id='target-section')" format="I"/> 页 </fo:block>
注意:主流XSL-FO处理器(如Apache FOP、RenderX XEP)都支持current-page()函数和上述写法,无需额外配置。
内容的提问来源于stack exchange,提问作者inVoKer
相关产品推荐
相关产品推荐

