2017-11-20 9 views
0

一連の独立したページシーケンスの後に最後のページ番号を取得したい場合は、ドキュメントの最後に余分なページを挿入しないでください。現在、追加の空のページを生成する1つの余分なページシーケンスを<fo:block id="last-page"/>と追加する必要があります。XSL-FO - 可変ページ数の独立したページシーケンスの後の最後のページ番号

<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

SOMETHING-2とSOMETHING-3の要素は異なる名前ですか?同じ要素名の複数の出現(例: '' – Hobbes

答えて

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を決めるだけで済みます。

+0

どのIDを使用するかは、難しい部分です。 XSLTには、一連のifステートメントの後で最新の値を追跡するために上書きできる変数を持つ方法はありません。 –

+1

これはありませんが、これらの 'xsl:call-template'のまわりに' xsl:variable'を置くと、興味深い 'fo:page-sequence'をすべて得ることができます。変数のXPathを使って、最後の 'fo:page-sequence'のIDを取得するか、変数の値を変換して、最後の' fo:page-sequence'に既知のIDを追加することができます。次に、変数(またはその変換された値)を結果にコピーします。 (XSLT 1.0を使用している場合よりも、XSLT 2.0またはXSLT 3.0のほうが簡単です) –

0

これは間違った方向に進むかもしれません。

あなたがこれを行う場合は、次の

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

あなたは<xsl:if test="//SOMETHING-2-EXISTS = 'Y'">建設を取り除くことができます。

次のステップは、最後の章がどれであるかを調べることです。あなたはposition()を使用できますか?それは何か2〜3何があるかによって決まります。それらが異なる名前を持つ要素である場合、より難しいですが、それらが同じ要素名の複数の出現である場合(例:あなたはposition()を使うことができます。

+0

XSL 1.1では、 'fo:page-number-citation-last'(https: //www.w3.org/TR/xsl11/#fo_page-number-citation-last)に 'ref-id'(https://www.w3.org/TR/xsl11/#ref-id)を付けないでください。 –

+0

私はこれに行きました.3番目のコードサンプルをご覧ください:https://www.alt-soft.com/tutorial/xslfo_tutorial/xsl-fo_page-number.html – Hobbes

+0

拡張機能の場合は、文書化されていません。間違っている。 'ref-id'(https://www.w3.org/TR/xsl11/#ref-id)には値が必要です。この値は、プロパティが存在する必要があると言うラウンドアバウトの方法です。 –

関連する問題