|
Subject: Re: [xsl] how to trigger a new page sequence, depending on specific input conditions From: team wise <dfanster@xxxxxxxxx> Date: Sun, 2 Oct 2011 21:52:43 +0800 |
Many thanks Tony for your prompt reply which I found 'insightful'!
I am after a proper sort of method how to trigger a new page sequence,
> depending on specific input conditions.
> For example, as input, below is a content model XML with xtrf
> attribute featuring an unique identifier, such as GUID-1234,
> <concept>
> <title xtrf="GUID-1234">
> Explore and get support
> </title>
> <conbody/>
> </concept>
I, for one, am not sure what you are after. What comes before and after
this <concept>? Is it nested within several levels of elements or is it a
child of the document element?
--->In the context of the top level DITA Map , yes, that <concept> is
the child of the document element.
<xsl:for-each-group
select="*"
group-ending-with="concept[title/@xtrf = 'GUID-1234']">
<fo:page-sequence ...>
...
<xsl:apply-templates select="current-group()" />
</fo:page-sequence>
</xsl:for-each>
--->
I forgot mentioning that with <fo: break-before name=bpageb/>, I made
the bspecificb concept XML fragment distinct, therefore the
@xtrf=bGUID-1234b should be replaced with
bconcept[title/@outputclass=bpagebreakb]b>
If you need to do this for multiple specific <context>, you can use a
sequence of @xtrf values in the predicate instead, e.g.:
title/@xtrf = ('GUID-1234', 'GUID-5678')
o
--->
Considering the xtrf value, such as GUID-1234' is bvariableb and not
predictable until at the publishing time, which means that it can only
be determined and fetched when users specify the bcontextb. How can I
apply that syntax?
Presumably the 'last()' is for this particular <concept> only?
-->o exactly right.
If the <concept> is a child of the document element, then it might be as
simple as using xsl:for-each-group [1] with 'group-ending-with', e.g.:
<xsl:for-each-group
select="*"
group-ending-with="concept[title/@xtrf = 'GUID-1234']">
<fo:page-sequence ...>
...
<xsl:apply-templates select="current-group()" />
</fo:page-sequence>
</xsl:for-each>
If you need to do this for multiple specific <context>, you can use a
sequence of @xtrf values in the predicate instead, e.g.:
title/@xtrf = ('GUID-1234', 'GUID-5678')
> The intention is that the above XML content model shall be placed on
It's more commonly referred to as a 'fragment', BTW: 'content model' is a
term from DTDs for the definition of what's allowed in a particular
element.
> the last page of a PDF document with the following rendering effect
>
> <xsl:if test="$outputformat = 'UG_Booklet_Print'">
> <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>
Presumably the 'last()' is for this particular <concept> only?
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
[1] http://www.w3.org/TR/xslt20/#xsl-for-each-group
--
Keep an Exacting Eye for Detail
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] how to trigger a new page, Tony Graham | Thread | Re: [xsl] how to trigger a new page, Tony Graham |
| Re: [xsl] how to trigger a new page, Tony Graham | Date | Re: [xsl] Thank you, Xmlizer |
| Month |