Re: [xsl] how to trigger a new page sequence, depending on specific input conditions

Subject: Re: [xsl] how to trigger a new page sequence, depending on specific input conditions
From: team wise <dfanster@xxxxxxxxx>
Date: Mon, 3 Oct 2011 17:59:06 +0800
Hi Tony,

I was grateful to your patience in guiding me through the problem
solving scenario.

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
as follows:
   <xsl:apply-templates select=". |
preceding-sibling::*[count(preceding-sibling::*[contains(@outputclass,
'pagebreak')] = $position )-1]" />
However, the command line threw error again:
/infoshare.dita2fo.setup.xsl:
 Error in expression . |
preceding-sibling::*[count(preceding-sibling::[contain
s(@outputclass, 'pagebreak')] = $position )- 1]: Unexpected token [[]
after axis name
Transformation failed: Run-time errors were reported
Kindly, note also that  the outputclass=pagebreak should be placed
within  such as <concept> , <task> or <reference> elements.  As such,
I thought *[contains(@outputclass, pagebreak)] can return what I
desire to get.
Can you please advise how to debug the above?

Does it implement exslt:node-set() [1]?  set:difference() [2]?
-->I am not sure if it  was intended to be the EXSTL  Sets module?
if that being the case, I dont quite understand how to apply it,
given the syntax rule according to the Jenis book entitled XSLT and
XPATH on the Edge indicates Node-set set: difference (node-set,
node-set).

With above changes, the line of code is as follows, which failed:

<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>

Current Thread