|
Subject: Re: [xsl] how to trigger a new page sequence, depending on specific input conditions From: "Tony Graham" <tgraham@xxxxxxxxxx> Date: Thu, 6 Oct 2011 18:10:39 +0100 (IST) |
On Thu, October 6, 2011 4:06 pm, team wise wrote:
...
>>> <xsl:template name="insert.lastchapter">
>>> <xsl:param name="content"/>
>>
>> What does $content do? You don't seem to be using it.
> --->o Absolutely right. refactored or bought from binsert.chapterb
> named template , it is not used here.
Then you can omit it without ill-effect: you can use
xsl:call-template/xsl:with-param without there being a corresponding
xsl:template/xsl:param. If you don't have a xsl:param for a parameter
(and also don't try to use it without having a xsl:param) the XSLT
processor won't complain.
...
>> It's also not clear to me whether there's anything that comes after the
>> last element that has 'outputclass="pagebreak"'.
> --->Let me clarify. It could be the case that after the last element
> that has 'outputclass="pagebreak"', there is another element featuring
> that attribute and value. Content featuring attributeb outputclass
> =bpagebreakbb can be either last node or any node within a node tree
Okay.
> (
> in practice, a merged DITA XML is input ) in other words, it is
> randomly attached as authors work with DITA XML and attach that
> attribute value at will. On the other hand, it is desirable that the
> last content must have 'outputclass="pagebreak"'.
You could add code so markup after the last 'outputclass="pagebreak"'
could be handled. It seems to me that right now it would be silently
dropped if it existed.
...
>>> <xsl:apply-templates select=". |
>>> preceding-sibling::*[count(preceding-sibling::*[contains(@outputclass,
>>> 'pagebreak')]) = $position - 1]" />
>>> <fo:flow flow-name="region.body">
>>
>> I would have thought that the xsl:apply-templates would have gone here,
>> not before the fo:flow.
> ---->I think you are right,. the entire construct works just fine,
> when it comes to trigger a new page sequence to enable the last page
> effect.
Does that mean that the problem is solved?
>> Is it the case that all you really need is 'break-after="page"' or
>> 'break-after="odd-page"' [1] on the fo:block for the element that has
>> 'outputclass="pagebreak"'?
> ---> I think is 'break-after="page"' on the fo:block for the element that
> has
> 'outputclass="pagebreak"' is exactly what I am trying to accomplish.
> The repeated last page in the final PDF is the side effect arising
> from the newly introduced named template that enables the desired last
> page effect.
>>> Second, as indicated below, to prevent <fo:flow
>>> flow-name"region.body"> from flowing in the last node to appear on the
>>> last page or the back page repeatedly within 'insert.chapter', I have
>>> tried
>>
>> I don't understand "prevent <fo:flow flow-name"region.body"> from
>> flowing
>> in the last node".
> ---> To the best of my knowledge, I see that <fo:flow> allows to flow
> in content that is made up of all topic DITA XML of various types.
> Instead of excluding the last topic XML "Explore and get more support"
> or the last node, it pulled in all topics.
I'm still not sure that I get it, but do you need two fo:page-sequence,
one for everything before the element with 'outputclass="pagebreak"' and
one for the element itself?
<xsl:template name="insert.lastchapter">
<xsl:if test="$outputformat = 'UG_Booklet_Print'">
<xsl:for-each select="*[contains(@outputclass, 'pagebreak')]">
<xsl:variable name="position" select="position()" />
<fo:page-sequence initial-page-number="auto" format="1"
master-reference="chapter-master"
color="rgb-icc(#CMYK,0%,0%,0%,80%)">>
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates select="
preceding-sibling::*[count(preceding-sibling::*[contains(@outputclass,
'pagebreak')]) = $position - 1]" />
<fo:flow flow-name="region.body">
</fo:flow>
</fo:page-sequence>
<fo:page-sequence initial-page-number="auto" format="1"
master-reference="chapter-master"
axf:background-color="{$background_colour}"
color="rgb-icc(#CMYK,0%,0%,0%,0%)">
<xsl:apply-templates />
</fo:page-sequence>
</xsl:for-each>
</xsl:if>
</xsl:template>
Regards,
Tony Graham tgraham@xxxxxxxxxx
Consultant http://www.mentea.net
Mentea 13 Kelly's Bay Beach, Skerries, Co. Dublin, Ireland
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
XML, XSL FO and XSLT consulting, training and programming
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] how to trigger a new page, team wise | Thread | Re: [xsl] change xslt processing or, Navin Patel |
| Re: [xsl] how to trigger a new page, team wise | Date | [xsl] Unable to select wanted nodes, Mark |
| Month |