我希望在一系列独立页面序列之后获取最后一页的编号,而不在文档的末尾添加额外的页面。目前,我必须添加一个额外的页面序列,其中一个<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>
答案 0 :(得分:0)
fo:page-citation-last
(https://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()。