Subject: Re: how to trigger a new page sequence, depending on specific input conditions
From: team wise <dfanster@xxxxxxxxx>
Date: Tue, 4 Oct 2011 14:14:22 +0800
|
Hi Tony,
With your amended code, I have injected it to the existing XSL, which
fails to output desirable PDF once again when working through the
Input XML.
I think one vital thing I did not made it clear enough in the first
place here is :
Instead of the input you depicted below, the correct ' input' is in
fact something like this:
---------------------------------------
<Map>
<topicref href="GUID-1234"> <concept id="guid-5678"
outputclass="pagebreak">
Phone basics <title>Explore and get
suppport</title>
</topicref> <conbody/>
<topicref href="GUID-5678"> -------> <concept>
Explore and get support
</topicref>
</Map>
---------------------------------------
On the same note, I did notice , when Antenna House compiled FO to the
resulting PSMI , it complained about the missing Page Master name. I
overcome it by ' refacoring the relevant 'Master-Reference'.
In short, when i debugged the specific piece of code by
<xsl:message/>, it appears that that specific line of code does not
function at all. That is why I explicitly specify the ' input' above.
Please could you advise?
Thank you,
2011/10/3 Tony Graham <tgraham@xxxxxxxxxx>:
> On Mon, October 3, 2011 10:59 am, team wise wrote:
>> I was grateful to your patience in guiding me through the problem
>> solving scenario.
>
> There's any number of people on this list who would have been able to
> help, and often do. It just happened that I replied first.
>
>> When I applied the original line of code you indicated below,
>> <xsl:apply-templates select=".
>>
|preceding-sibling::*[count(preceding-sibling::concept[title/@outputclass='pa
gebreak']
>> = $position - 1" />
>> the command line threw errors when running against Saxon 6.5.5 as XSLT
>> processor. Obviously, it missed a pair of both square bracket and
>> bracket. I have just made amendments to it and the resulting code is
>
> It was untested, sorry about that.
>
> It seems that your correction closed the count() in the wrong place.
>
> For this input:
>
> ---------------------------------------
> <UG_Booklet_Print>
> <concept>
> <title xtrf="GUID-1234">
> Explore and get support
> </title>
> <conbody/>
> </concept>
> <concept outputclass="pagebreak">
> <title xtrf="GUID-1234">
> Explore and get support
> </title>
> <conbody/>
> </concept>
> <concept>
> <title xtrf="GUID-1234">
> Explore and get support
> </title>
> <conbody/>
> </concept>
> </UG_Booklet_Print>
> ---------------------------------------
>
> this stylesheet:
> ---------------------------------------
> <xsl:stylesheet
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:fo="http://www.w3.org/1999/XSL/Format"
> xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
> version="1.0">
>
> <xsl:param name="outputformat" select="'UG_Booklet_Print'" />
> <xsl:param name="background_colour" select="'dodgerblue'" />
>
> <xsl:template match="UG_Booklet_Print">
> <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">
> <xsl:choose>
> <xsl:when test="position() = last()">
> <xsl:attribute name="axf:background-color"><xsl:value-of
> select="$background_colour"/></xsl:attribute>
> <xsl:attribute
> name="color">rgb-icc(#CMYK,0%,0%,0%,0%)</xsl:attribute>
> </xsl:when>
> <xsl:otherwise>
> <xsl:attribute
> name="color">rgb-icc(#CMYK,0%,0%,0%,80%)</xsl:attribute>
> </xsl:otherwise>
> </xsl:choose>
> <xsl:apply-templates
> select=". |
>
preceding-sibling::*[count(preceding-sibling::*[contains(@outputclass,
> 'pagebreak')]) = $position - 1]" />
> </fo:page-sequence>
> </xsl:for-each>
> <xsl:if
> test="*[contains(@outputclass,
'pagebreak')][last()]/following-sibling::*">
> <fo:page-sequence initial-page-number="auto" format="1">
> <xsl:choose>
> <xsl:when test="position() = last()">
> <xsl:attribute name="axf:background-color"><xsl:value-of
> select="$background_colour"/></xsl:attribute>
> <xsl:attribute
> name="color">rgb-icc(#CMYK,0%,0%,0%,0%)</xsl:attribute>
> </xsl:when>
> <xsl:otherwise>
> <xsl:attribute
> name="color">rgb-icc(#CMYK,0%,0%,0%,80%)</xsl:attribute>
> </xsl:otherwise>
> </xsl:choose>
> <xsl:apply-templates
> select="*[contains(@outputclass,
> 'pagebreak')][last()]/following-sibling::*" />
> </fo:page-sequence>
> </xsl:if>
> </xsl:if>
> </xsl:template>
>
> </xsl:stylesheet>
> ---------------------------------------
>
> gives this output with xsltproc:
>
> ---------------------------------------
> <fo:page-sequence xmlns:fo="http://www.w3.org/1999/XSL/Format"
> xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
> initial-page-number="auto" format="1" axf:background-color="dodgerblue"
> color="rgb-icc(#CMYK,0%,0%,0%,0%)">
>
> Explore and get support
>
>
>
>
> Explore and get support
>
>
> </fo:page-sequence><fo:page-sequence
> xmlns:fo="http://www.w3.org/1999/XSL/Format"
> xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
> initial-page-number="auto" format="1" axf:background-color="dodgerblue"
> color="rgb-icc(#CMYK,0%,0%,0%,0%)">
>
> Explore and get support
>
>
> </fo:page-sequence>
> ---------------------------------------
>
> 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
>
>
--
Keep an Exacting Eye for Detail
|