XSL-FO - 可变数量的独立页面顺序后的最后一页编号

时间:2017-11-20 20:24:02

标签: xsl-fo

我希望在一系列独立页面序列之后获取最后一页的编号,而不在文档的末尾添加额外的页面。目前,我必须添加一个额外的页面序列,其中一个<fo:block id="last-page"/>生成一个额外的空页面。这就是这个想法:

<xsl:call-template name="a-block-with-its-own-page-sequence"/>

<xsl:if test="//SOMETHING-2-EXISTS = 'Y'">
  <xsl:call-template name="a-block-with-its-own-page-sequence-page-number-continues"/>
</xsl:if>

<xsl:if test="//SOMETHING-3-EXISTS = 'Y'">
  <xsl:call-template name="a-block-with-its-own-page-sequence-page-number-continues"/>
</xsl:if>

<!-- 
   and more blocks with its own page sequences here 
-->

<!-- Currently I have to do this which create an extra page -->
<fo:page-sequence master-reference="lastOneForSure">
    <xsl:call-template name="header_footer"/>
    <fo:flow flow-name="xsl-region-body">
        <fo:block id="last-page"/>
    </fo:flow>
</fo:page-sequence>

2 个答案:

答案 0 :(得分:0)

fo:page-citation-lasthttps://www.w3.org/TR/xsl11/#fo_page-number-citation-last)会为您提供FO区域生成的最后一页。

如果每个fo:page-sequence都有一个ID,那么您只需要确定用于fo:page-citation-last/@ref-id值的ID。

答案 1 :(得分:0)

你可能会以错误的方式解决这个问题。

如果你这样做:

<template match="SOMETHING-2|SOMETHING-3">
    <fo:page-sequence>

你可以摆脱<xsl:if test="//SOMETHING-2-EXISTS = 'Y'">构造。

下一步是弄清楚哪一个是最后一章。你能用position()吗?这取决于SOMETHING-2 | SOMETHING-3是什么。如果它们是具有不同名称的元素,则更难,但如果它们只是多次出现相同的元素名称,例如你可以使用position()。