- From: Colin Savage <sav912@hotmail.com>
- Date: Tue, 9 Sep 2003 09:01:07 +0200
- To: "W3C XSL-FO Mailing list" <www-xsl-fo@w3.org>
To solve one part of your problem you can use the "column-count" attribute on the region body to create the 3 columns, and the "span" attribute on the heading fo:block to get the heading to span across all 3 columns. As for getting the columns to start filling in the first column after the filling the third column...dunno, the only thing i can think of is to break onto the next page. Colin ----- Original Message ----- From: "Robin Harvey" <rh@harrogatesoftware.com> To: "W3C XSL-FO Mailing list" <www-xsl-fo@w3.org> Sent: Monday, September 08, 2003 5:51 PM Subject: Newby help with <fo:flow> > > Hi. > > I'm new to xsl-fo, and was getting on just fine before i ran in to this > brick wall. I have a long list of data in XML that i want to format into a > book. The data needs to flow in 3 columns, and all 3 colunms need to be > broken by headings, like so: > > heading 1 > > 1 4 7 > 2 5 8 > 3 6 > > heading 2 > > 1 6 11 > 2 7 12 > 3 8 13 > 4 9 14 > 5 10 > > etc. > > > I've found a way of flowing in 3 columns, but the headings appear in the > columns, like this: > > heading1 5 1 > 1 6 2 > 3 7 3 > 4 8 4 > 4 heading2 > > I've tried using separate tables for the headings and the data, with a > number-columns-spanned="3" in the table holding the heading, but it made no > difference. I also tried using separate rows for the header and the data, > but again it made no difference. > I think what i need to do is have a nested flow within the main > "xsl-region-body" flow, to hold the heading and stop it flowing with the > rest of the data, but i can't find how to do this. Can someone help me > please? Is it possible to nest flows within the same document, or am i > missing a trick?? Here is a listing of the xsl stylesheet i am using. I am > using Sablotron XSLT parser and FOP XSL-FO PDF generator. > > <?xml version="1.0"?> > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > <xsl:template match="/"> > <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> > > <fo:layout-master-set> > <fo:simple-page-master master-name="data_main" > page-width="21cm" > page-height="29.7cm"> > <fo:region-body column-count="3" column-gap="0.3in" margin="1in"/> > <fo:region-before extent="0.9in"/> > </fo:simple-page-master> > </fo:layout-master-set> > > <fo:page-sequence master-reference="data_main"> > > <fo:static-content flow-name="xsl-region-before"> > <fo:block text-align="center" font-family="Times" font-size="10"> > <fo:page-number/> > </fo:block> > </fo:static-content> > <fo:static-content flow-name="xsl-footnote-separator"> > <fo:block> > <fo:leader leader-pattern="rule" leader-length="100%" > rule-thickness="0.5pt" color="#007044"/> > </fo:block> > </fo:static-content> > > <fo:flow flow-name="xsl-region-body"> > <xsl:for-each select="/root/specialty"> > <!-- THIS TABLE FOR THE HEADER - DOESNT SPAN 3 COLUMNS --> > <fo:table table-layout="fixed"> > <fo:table-column column-width="136px"/> > <fo:table-body> > <fo:table-row> > <fo:table-cell number-columns-spanned="3" > border-style="solid"> > <fo:block space-before="18pt" > font-family="sans-serif" > font-size="16pt" > line-height="18pt" > text-align="center"> > <xsl:value-of select="@name"/> > </fo:block> > </fo:table-cell> > </fo:table-row> > </fo:table-body> > </fo:table> > > <fo:wrapper text-align="start"> > <fo:table table-layout="fixed"> > <!-- THIS TABLE FOR THE DATA - FLOWS IN 3 COLUMNS OK --> > <fo:table-column column-width="136px"/> > <fo:table-body> > <fo:table-row> > <fo:table-cell border-style="solid"> > <xsl:for-each select="consultant"> > <fo:block space-before="9pt" > font-family="sans-serif" > font-size="12pt" > line-height="16pt" > background-color="blue" > color="white" > text-align="center"> > <xsl:value-of select="title"/> > <xsl:text> </xsl:text> > <xsl:if test="fnames != ''"> > <xsl:value-of select="fnames"/> > <xsl:text> </xsl:text> > </xsl:if> > <xsl:value-of select="snames"/> > </fo:block> > <fo:block space-before="4pt" > font-family="sans-serif" > font-size="8pt"> > Consultant in <xsl:value-of select="spec_desc"/> > </fo:block> > <xsl:if test= "spec_int != ''"> > <fo:block space-before="4pt" > font-family="sans-serif" > font-size="8pt" > keep-together.within-column="always"> > <fo:inline font-style="italic">Special Interests: > </fo:inline> > <xsl:value-of select="spec_int"/> > </fo:block> > </xsl:if> > </xsl:for-each> > </fo:table-cell> > </fo:table-row> > </fo:table-body> > </fo:table> > </fo:wrapper> > </xsl:for-each> > </fo:flow> > </fo:page-sequence> > </fo:root> > </xsl:template> > </xsl:stylesheet> > > Thanks in advance for any assistance. > > Robin Harvey > > p.s. - i've had to make extensive use of <xsl:for-each> because when i used > 'external' templates i got name space errors popping up (in sablotron). Is > there any way of transfering the fo namespace into a second (or third) > template?? > >
Received on Tuesday, 9 September 2003 08:43:15 UTC