You need to enable JavaScript to run this app. XSLT FOP生成PDF时表格筛选行自动连续编号问题求解
优惠活动
大模型
产品
解决方案
定价
更多

XSLT FOP生成PDF时表格筛选行自动连续编号问题求解

问题原因

position()函数返回的是节点在xsl:for-each遍历的原始节点集中的位置,你当前的代码遍历所有DataRow节点,仅在输出时用xsl:if过滤空值,被过滤的节点依然会被计入position()的计数,所以会出现跳号问题。

解决方案

将筛选逻辑移动到xsl:for-each的select属性中,直接仅遍历符合条件的DataRow节点,此时position()返回的就是筛选后节点的连续顺序编号。

调整后完整代码片段
<fo:table width="100%">
    <fo:table-column column-width="8mm"/>
    <fo:table-column column-width="172mm"/>
    <fo:table-body>
        <xsl:for-each select="/Data/DataRow[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:for-each>
    </fo:table-body>
</fo:table>

该方案兼容XSLT 1.0及以上所有版本,无需额外扩展支持。


内容的提问来源于stack exchange,提问作者kalpha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 03:30:02