Xml 如何在XSL FO中修复页面底部的表尾?

Xml 如何在XSL FO中修复页面底部的表尾?,xml,xslt,xsl-fo,apache-fop,Xml,Xslt,Xsl Fo,Apache Fop,我正在使用XSL-FO(使用ApacheFop处理) 我的表xsl代码如下所示: <!-- ... Some xsl fo code with data occupying 1/2 page ... --> <fo:table> <fo:table-header> Item Name </fo:table-header> <fo:table-footer> Total: &

我正在使用XSL-FO(使用ApacheFop处理)

我的表xsl代码如下所示:

<!-- ... Some xsl fo code with data occupying 1/2 page ... -->
<fo:table>
   <fo:table-header>
      Item Name 
   </fo:table-header>
   <fo:table-footer>
      Total: 
         <xsl:value-of select="total" />
   </fo:table-footer>
   <fo:table-body>
      <fo:table-row>
         <xsl:value-of select="itemName" />
      </fo:table-row> 
   </fo:table-body>
</fo:table>
第1页所需的样本输出:

第2页所需的样本输出:
重读你的问题后,我会这样做。 您应该为first、rest和last设置页面模板

这有两个原因——(1)您希望这些表尾位于底部,(2)许多产品(包括FOP)不支持检索表标记。将标记检索到表行中对于格式化程序来说是非常困难的,尤其是检索到的内容的大小导致表重新格式化(就像该行不再适合)

之后的第一个页面模板区域将有一个表行,其中“Total:”为空

之后的rest页面模板区域将有一个表行,其中“Total:”为空,后跟“*上一页的延续”

最后一个页面模板将在以下区域中没有任何内容:总计:,只有“*上一页的延续”

创建表时,在添加所有其他行(其中包含相应的总计)后,在表中添加“总计:”行。您可以只在末尾添加(没有这些空白行),或者在空白行中添加,然后在一行小一点之后使该区域适应该行。不过,我不建议这样做,除非您必须有空白行,所有的表必须是相同的高度。您也可以只在页脚中留下一个标记,将其拉到页脚而不检索表标记

唯一需要注意的是,是否选择了行大小和页面维度,以便放置在区域后区域中的“Total:”行与表的其余部分很好地匹配


有关页面模板设置和顺序,请参阅。在这种情况下,您可以使用唯一的页面模板在后面的区域中不放置任何内容,因为在这种情况下您不需要“*Continuation”行。

因此您需要“Total”“显示在每一页的底部,但要显示‘上一页的延续’,而不是页面上的总计,然后将总计显示在文档的最后一页?ie您不会对一个文档中的多个表执行此操作?如果表行都是一行高,并且完全适合页面,则您可以只在页面序列中执行所需操作,在页面序列中定义标记中的页脚并将该标记拉到页脚。您也可以尝试使用支持表格标记的产品,但不要;我不知道FOP是否支持这一点是的Adam。事实上,我只需要最后一页的总值(我已经检查了表尾的条件,但它不起作用..有什么建议吗??)嘿,凯文,谢谢你的回复。你能发送表格标记的教程链接吗?这样我就可以根据你的评论来解决我的问题。
<itemDetail>
   <itemName>Car1</itemName>
   <itemName>Car2</itemName>
   <itemName>Car3</itemName>
   <itemName>Car4</itemName>
   <itemName>Car5</itemName>
   <itemName>Car6</itemName>
   <itemName>Car7</itemName>
   <itemName>Car8</itemName>
   <itemName>Car9</itemName>
   <itemName>Car10</itemName>
   <itemName>Car11</itemName>
   <itemName>Car12</itemName>
   <itemName>Car13</itemName>
   <itemName>Car14</itemName>
   <itemName>Car15</itemName>
   <itemName>Car16</itemName>
   <itemName>Car17</itemName>
   <itemName>Car18</itemName>
   <itemName>Car19</itemName>
   <itemName>Car20</itemName> 
</itemDetail>
<total>20</total>