Subject: Re: [xsl] Re: XSL-FO: Creating Marginalias with Apache FOP From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> Date: Fri, 05 Nov 2010 10:07:10 -0400 |
I corrected my xml: (the number and order of maintextX and marginaliaX varies):
My PDF output should look like this:
----------------------------------------------- | <marginalia1> | (Nested table:) <title> | | |-----------------------------| | | (Nested table:) <maintext1> | | |-----------------------------| | | (Nested table:) <maintext2> | |---------------------------------------------| | <marginalia2> | (Nested table:) <maintext2> | | |-----------------------------| | | (Nested table:) <maintext3> | |---------------------------------------------| | <marginalia3> | (Nested table:) <maintext4> | -----------------------------------------------
Yes, all of the elements have unique names.
T:\ftemp>type gerhard.xml <root> ... <body> <marginalia1>number</marginalia1> <title>title</title> <body_info> <maintext1>ipsum lorem</maintext1> <maintext2>consectetur</maintext2>
<marginalia2>ut enim2</marginalia2> <maintext2>consequat r2</maintext2> <maintext3>consequat r3</maintext3>
<marginalia3>ut enim3</marginalia3> <maintext4>consequat r4</maintext4> </body_info> </body> ... </root>
T:\ftemp>type gerhard.xsl <?xml version="1.0" encoding="US-ASCII"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="/"> <table border="1"> <xsl:for-each-group select="/root/body/body_info/*" group-starting-with="*[starts-with(name(.),'marginalia')]">
<xsl:choose> <xsl:when test="starts-with(name(.),'marginalia')"> <!--then this is not the first grouping of the set--> <tr> <td rowspan="{count(current-group())-1}" valign="top" > <xsl:value-of select="."/> </td> <td> <xsl:value-of select="current-group()[2]"/> </td> </tr> <xsl:for-each select="current-group()[position()>2]"> <tr> <td> <xsl:value-of select="."/> </td> </tr> </xsl:for-each> </xsl:when> <xsl:otherwise> <!--this is the first grouping of the set--> <tr> <td rowspan="{count(current-group())+1}" valign="top" > <xsl:value-of select="../../marginalia1"/> </td> <td> <xsl:value-of select="../../title"/> </td> </tr> <xsl:for-each select="current-group()"> <tr> <td> <xsl:value-of select="."/> </td> </tr> </xsl:for-each> </xsl:otherwise> </xsl:choose> </xsl:for-each-group> </table> </xsl:template>
</xsl:stylesheet> T:\ftemp>xslt2 gerhard.xml gerhard.xsl <?xml version="1.0" encoding="UTF-8"?> <table border="1"> <tr> <td rowspan="3" valign="top">number</td> <td>title</td> </tr> <tr> <td>ipsum lorem</td> </tr> <tr> <td>consectetur</td> </tr> <tr> <td rowspan="2" valign="top">ut enim2</td> <td>consequat r2</td> </tr> <tr> <td>consequat r3</td> </tr> <tr> <td rowspan="1" valign="top">ut enim3</td> <td>consequat r4</td> </tr> </table>
-- Contact us for world-wide XML consulting & instructor-led training Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx Legal business disclaimers: http://www.CraneSoftwrights.com/legal
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Re: XSL-FO: Creating Marginal, Gerhard Glatz | Thread | [xsl] multi level sorting method, ahamed meeran |
[xsl] Re: XSL-FO: Creating Marginal, Gerhard Glatz | Date | Re: [xsl] Saxon documentation pages, Martin Honnen |
Month |