[Home] [By Thread] [By Date] [Recent Entries]
Hi all,
I have a working template that I need to modify. At the moment, as it iterates through the for-each-group, every group (Title) is treated identically. I need to provide a different behavior The first group will be wrapped by a row/cell with the "keep "property, all others in a non-"keep" property row/cell. The current template is in Listing 1, my attempt to modify it in listing 2. Before I bollix everything up, would someone look it over and tell me if I have done it right or if there is a better way? Listing 1. <xsl:template name="format-article"> <xsl:for-each-group select="../Article" group-by="Title"> <xsl:sort select="Title"/> <xsl:sort select="Year"/> <xsl:sort select="IssueNumber" data-type="number"/> <xsl:sort select="Page"/> <fo:block xsl:use-attribute-sets="citation"> <!--for a given title, put the first group in one block--> <fo:wrapper xsl:use-attribute-sets="title"> <xsl:apply-templates select="Title"/> </fo:wrapper> <xsl:apply-templates select="Person"/> <!--and for each citation--> <xsl:apply-templates select="current-group()" mode="format"/> </fo:block> </xsl:for-each-group> </xsl:template> Listing 2: <xsl:template name="format-article"> <xsl:for-each-group select="../Article" group-by="Title"> <xsl:sort select="Title"/> <xsl:sort select="Year"/> <xsl:sort select="IssueNumber" data-type="number"/> <xsl:sort select="Page"/> <!-- Put the first citation in a keeping row--> <xsl:for-each select="current-group()"> <xsl:choose> <xsl:when test="current-group()[1]"> <fo:table-row keep-with-previous="always"> <fo:table-cell> <fo:block xsl:use-attribute-sets="citation"> <fo:wrapper xsl:use-attribute-sets="title"> <xsl:apply-templates select="Title"/> </fo:wrapper> <xsl:apply-templates select="Person"/> <!--and for each citation--> <xsl:apply-templates select="current-group()" mode="format"/> </fo:block> </fo:table-cell> </fo:table-row> </xsl:when> <xsl:otherwise> <fo:table-row> <fo:table-cell> <!--and put all the other citations in one a non-keeping row--> <fo:block xsl:use-attribute-sets="citation"> <fo:wrapper xsl:use-attribute-sets="title"> <xsl:apply-templates select="Title"/> </fo:wrapper> <xsl:apply-templates select="Person"/> <xsl:apply-templates select="current-group()" mode="format"/> </fo:block> </fo:table-cell> </fo:table-row> </xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:for-each-group> </xsl:template>
|

Cart



