我正在使用 Apache FOP v2.9,以及 JDK v17 下的 Saxon HE v12.3 和 XSLT 版本 3.0。
我正在尝试在表的行级别指定填充。
根据文档,这应该可以工作,但填充被忽略:
<xsl:template match="OrderLines">
<fo:table table-layout="fixed" width="100%" border="solid 1pt">
<fo:table-column column-width="18mm"/>
<fo:table-column/>
<fo:table-body>
<xsl:for-each select="OrderLine">
<fo:table-row padding-top="15pt">
<fo:table-cell>
<fo:block>SKU</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>Qty</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:for-each>
</fo:table-body>
</fo:table>
</xsl:template>
这很好用:
<xsl:template match="OrderLines">
<fo:table table-layout="fixed" width="100%" border="solid 1pt">
<fo:table-column column-width="18mm"/>
<fo:table-column/>
<fo:table-body>
<xsl:for-each select="OrderLine">
<fo:table-row>
<fo:table-cell padding-top="15pt">
<fo:block>SKU</fo:block>
</fo:table-cell>
<fo:table-cell padding-top="15pt">
<fo:block>Qty</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:for-each>
</fo:table-body>
</fo:table>
</xsl:template>
任何人有什么想法吗?
生成的 FO(摘录)如下所示:
<fo:table-row padding-top="15pt">
<fo:table-cell text-align="left">
<fo:block>SKU</fo:block>
</fo:table-cell>
<fo:table-cell padding-right="2mm">
<fo:block>Qty</fo:block>
</fo:table-cell>
</fo:table-row>
padding-top
和其他填充属性不适用于 fo:table-row
。
https://www.w3.org/TR/xsl11/#fo_table-row
中
fo:table-row
的定义确实列出了适用于 fo:table-row
的“通用边框、填充和背景属性”,但那就是紧接着是一条注释,指出仅背景属性适用,如果
border-collapse
上的
fo:table
是
collapse' or
collapse-with-precedence`,则加上边框属性。没有填充属性的余量。
fo:table-row
未与
padding-top
一起列在https://www.w3.org/TR/xsl11/#prapply 的“属性及其适用的 FO”附录部分中