XSLT FOP PDF 表格行编号

Posted

技术标签:

【中文标题】XSLT FOP PDF 表格行编号【英文标题】:XSLT FOP PDF table row numbering 【发布时间】:2021-10-12 00:42:30 【问题描述】:

我正在尝试为仅输出某些行的表获取自动行编号。 示例测试xml

<Data>
<DataRow><Text>red</Text></DataRow>
<DataRow><Text></Text></DataRow>
<DataRow><Text>blue</Text></DataRow>
<DataRow><Text></Text></DataRow>
<DataRow><Text>green</Text></DataRow>

FOP XSLT 摘录

<fo:table >
    <fo:table-column column-/>
    <fo:table-column column-/>
    <fo:table-body>
        <xsl:for-each select="/Data/DataRow">
            <xsl:if test="string-length(Text) > 0">
                <fo:table-row>
                    <fo:table-cell>
                        <fo:block text-align="left">
                            <xsl:value-of select="position()" /><xsl:text>.</xsl:text>                          
                        </fo:block>     
                    </fo:table-cell>
                    <fo:table-cell>
                        <fo:block text-align="left">
                            <xsl:value-of select="Text" />
                        </fo:block>                     
                    </fo:table-cell>
                </fo:table-row>
            </xsl:if>
        </xsl:for-each>
    </fo:table-body>
</fo:table>     

想要的结果是

1.  red
2.  blue
3.  green

但我得到了

1.  red
3.  blue
5.  green

【问题讨论】:

【参考方案1】:

在 for-each 的表达式中使用谓词 Data/DataRow[normalize-space(Text)] 代替嵌套的 if。

【讨论】:

以上是关于XSLT FOP PDF 表格行编号的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 FOP 的 XSL-FO 中保留带有标题的表格但允许在表格主体内分页符

xslfo和fop使用中的一些问题

pdfbox / XSL + FOP 转换 PDF文档

pdfbox / XSL + FOP 转换 PDF文档

在 FOP 中用长字包裹在表格单元中

XSLT fop-0.95:dyn 问题:评估