Subject: [xsl] RE: xsl-list Digest 15 Dec 2006 06:10:00 -0000 Issue 989 From: "McDonald, Shaun" <Shaun.McDonald@xxxxxxxxxxx> Date: Wed, 27 Dec 2006 06:58:12 -0500 |
Hello All, Thanks for all the replies. And thank you, Phil, for being more specific about the problem I'm trying to solve. I apologize for having taken so long, but I've done more exhaustive research. Subsequently, I have decided that using markers with filters and absolutely positioned block-containers is very close to what we need. For example: (Version 1.0 / UTF-8 / FOP Processor) <xsl:template match="Para"> <fo:block > <xsl:if test="@change = 1"> <fo:marker marker-class-name="changed"> <fo:block-container position="absolute" width="7.3in" height="0.5in" background-color="white"> <fo:table width="100%"> <fo:table-column column-width="proportional-column-width(49.2)"/> <fo:table-column column-width="proportional-column-width(49.2)"/> <fo:table-column column-width="proportional-column-width(0.6)"/> <fo:table-body> <fo:table-row> <fo:table-cell width="44.2%" > <fo:block> <fo:inline font-size="10pt">Revision: </fo:inline> <fo:inline font-size="10pt"> <xsl:value-of select="@Revision"/> </fo:inline> </fo:block> </fo:table-cell> <fo:table-cell width="44.2%" > <fo:block> <fo:inline font-size="10pt">Page: </fo:inline> <fo:inline font-size="10pt"> <fo:page-number/> </fo:inline> </fo:block> </fo:table-cell> <fo:table-cell border-right-style="solid" border-right-width="1pt" border-right-color="black" width="0.6%"> <fo:block start-indent=".2in"> <fo:inline font-size="10pt"> </fo:inline> </fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table> </fo:block-container> </fo:marker> </xsl:if> <xsl:if test="@Revision = true() and @change = false()"> <fo:marker marker-class-name="unchanged"> <fo:block-container position="absolute" width="7.3in" height="0.5in" background-color="white"> <fo:table width="100%" > <fo:table-column column-width="proportional-column-width(50)"/> <fo:table-column column-width="proportional-column-width(50)"/> <fo:table-body> <fo:table-row> <fo:table-cell width="50%" > <fo:block> <fo:inline font-size="10pt">Revision: </fo:inline> <fo:inline font-size="10pt"> <xsl:value-of select="@Revision"/> </fo:inline> </fo:block> </fo:table-cell> <fo:table-cell width="50%" > <fo:block> <fo:inline font-size="10pt">Page: </fo:inline> <fo:inline font-size="10pt"> <fo:page-number/> </fo:inline> </fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table> </fo:block-container> </fo:marker> </xsl:if> <!--Para template data here--> </fo:block> </xsl:template> And: <xsl:template name="footerall"> <fo:static-content flow-name="xsl-region-after" display-align="after"> <fo:retrieve-marker retrieve-class-name="unchanged" retrieve boundary="page" retrieve-position="first-starting-within-page"/> <fo:retrieve-marker retrieve-class-name="changed" retrieve-boundary="page" retrieve-position="first-starting-within-page"/> </fo:static-content> </xsl:template> When XML: <Para Revision = "00"> text </Para> <Para Revision = "00"> text </Para> <Para Revision = "00"> text </Para> --- natural page break --- <Para Revision = "00"> text </Para> <Para Revision = "00"> text </Para> <Para change = "1" Revision = "01"> text </Para> <Para Revision = "00"> text </Para> Output in the footer: Revision: 00 Page: 1 (When @change is false() on page one) Revision: 01 Page: 2 | (When @change = 1 on page one) This works great. In the footer, the "changed" marker overlays the "unchanged" marker when that page contains a paragraph where @change = 1. The problem arises when I have three or more @Revision values. Consider the following XML: <Para Revision = "00"> text </Para> <Para Revision = "01"> text </Para> <Para change = "1" Revision = "02"> text </Para> --- natural page break --- <Para Revision = "00"> text </Para> <Para Revision = "01"> text </Para> The first output page is fine: Revision: 01 Page: 1 | The second output page is incorrect: Revision: 00 Page: 2 It should read Revision: 01 because that is the latest revision for that page. I have created a conditional marker for each @Revision value. That works, but it's too much if there are 98 revisions. How do I set a marker only for the highest @Revision value on a page? Regards, Shaun >Date: Thu, 14 Dec 2006 18:35:11 -0500 >To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> >From: "Philip Vallone" <philip.vallone@xxxxxxxxxxx> >Subject: RE: [xsl] XSL-FO: Accessing nodes by page >Message-id: <000101c71fd8$80749730$2f01a8c0@Main> > >Hi All, > >I am currently trying to publish an XML doc in PDF. This manual is a print >on paper and revised often. This means that the contents of the page would >dictate what's in the footer (date of revision and revision number). > >Has anyone any advice on how to achieve this. I am using the apache FOP >processor. > >Thanks, > >Phil > >-----Original Message----- >From: McDonald, Shaun [mailto:Shaun.McDonald@xxxxxxxxxxx] >Sent: Thursday, December 14, 2006 2:23 PM >To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx >Subject: [xsl] XSL-FO: Accessing nodes by page > >Hello List, > >According to >http://www.dpawson.co.uk/xsl/sect3/pagelayout.html#d12370e288, I quote: > >"...pagination is done after the transformation, in an independent step. >Therefore there is no way to get hold of the number of prescriptions >laid out on a certain page in the transformation. The layout process >itself lacks higher level functionality like counting, so no easy >solution here either." > >Is this still true? Is there no way to access nodes by page (for >instance, from a footer template) without forcing page breaks? > >Regards, > >Shaun McDonald > >------------------------------ > >Date: Fri, 15 Dec 2006 00:49:43 +0100 >To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx >From: "J.Pietschmann" <j3322ptm@xxxxxxxx> >Subject: Re: [xsl] XSL-FO: Accessing nodes by page >Message-ID: <4581E317.6060207@xxxxxxxx> > >McDonald, Shaun wrote: >> "...pagination is done after the transformation, in an independent step. >> Therefore there is no way to get hold of the number of prescriptions >> laid out on a certain page in the transformation. The layout process >> itself lacks higher level functionality like counting, so no easy >> solution here either." >> >> Is this still true? Is there no way to access nodes by page (for >> instance, from a footer template) without forcing page breaks? > >That's correct. Some FO processors have extension functions which >might allow to do certain things. > >J.Pietschmann > >------------------------------ > >Date: Fri, 15 Dec 2006 00:23:16 GMT >To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx >From: David Carlisle <davidc@xxxxxxxxx> >Subject: Re: [xsl] XSL-FO: Accessing nodes by page >Message-Id: <200612150023.kBF0NGc6016033@xxxxxxxxxxxxxxxxxxx> > >> Has anyone any advice on how to achieve this. I am using the apache FOP >> processor. > >In general the way you use page contents to affect the page head and >foot is to use markers. The typesetting happens (in the model at least) >before pagination so there are no "nodes" to access by that time, but >when setting the head and foot you have access to any text put >in "markers" on the page. I just noticed 9while checking the link below) >that the markers are a bit more expressive in an xsl 1.1 system, but xsl >1.0 marks should be enough for doing revision numbers, and things like >index headlines which show the word range on teh current page, etc > >http://www.w3.org/TR/xsl11/ > >says in the status section: > >This Recommendation supersedes [XSL 1.0], which was published 15 October >2001. New functionality has been added to support change marks, indexes, >multiple flows, and bookmarks. Existing functionality has been extended >in the areas of graphics scaling, "markers" and their retrieval in >tables to support e.g. partial sums, and page number referencing. The >changes made in this document are intended to meet the requirements for >XSL 1.1 described in [XSL 1.1 Requirements]. A number of errata have >been incorporated into the text > >I suspect fop is 1.0 so a better ref would be the markers in that which >is: > >http://www.w3.org/TR/2001/REC-xsl-20011015/slice7.html#section-N48193- >Properties-for-Markers
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] units of measure and conv, Abel Braaksma | Thread | [xsl] row and column separator for , ms |
[xsl] units of measure and conversi, ms | Date | [xsl] Issue: Tables mirroring in Ar, Shailesh Shinde |
Month |