2017-11-20 20 views
0

문서 끝 부분에 추가 페이지를 삽입하지 않고 일련의 독립적 인 페이지 시퀀스 후에 마지막 페이지 번호를 가져 오려고합니다. 현재 여분의 페이지를 생성하는 <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-last (https://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

그럴 수는 없지만 흥미있는'fo : page-sequence'를 모두 얻기 위해서는'xsl : call-template'을 중심으로'xsl : variable'을 넣을 수 있습니다. 그런 다음 변수에 XPath를 사용하여 마지막 'fo : page-sequence'의 ID를 가져 오거나 변수의 값을 변환하여 알려진 'fo : page-sequence'에 알려진 ID를 추가 할 수 있습니다. 그런 다음 변수 (또는 변환 된 값)를 결과에 복사합니다. (XSLT 1.0이나 XSLT 3.0을 사용하는 것보다 XSLT 1.0을 사용하는 것이 더 쉽습니다.) –

0

당신은이 잘못된 방향으로 돌릴 수 있습니다.

이 작업을 수행 할 경우

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

당신이 <xsl:if test="//SOMETHING-2-EXISTS = 'Y'"> 건설을 제거 할 수 있습니다.

다음 단계는 마지막 장이 무엇인지 파악하는 것입니다. position()을 사용할 수 있습니까? 그건 무슨 일이 - 2 | SOMETHING-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

나는 이것으로 갈 것이고, 세 번째 코드 샘플을보실 수 있습니다 : 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)에는 값이 있어야합니다. 이것은 속성이 필요하다는 것을 말하는 둥근 방식입니다. –