[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Creating newspaper columns with fo:table
Hi Jacqueline,
You can't use fo:table for this purpose. Use the column-count and column-gap attribute of the fo:region-body element. If you use the XEP renderer, then you could also use the rx:flow-section (see http://www.renderx.com/reference.html#Flow_sections) Cheers, Jost --------- Jost Klopfstein Axos Technologies Inc. FO template development Visit us at http://www.axostech.com For forms use FormMapper: http://www.FormMapper.com ----- Original Message ----- From: "Jacqueline Radebaugh" <jrad@xxxxxxx> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> Sent: Wednesday, November 15, 2006 10:53 AM Subject: Creating newspaper columns with fo:table Dear All: I am trying to create a two column table in XSL:FO from which data will flow from column to column onto 10 consecutive pages. A portion of the XML is: <characterPositions> <characterPosition type="full concise"> <label>18-19</label> <name>Form of composition</name> <level>standard</level> <value type="concise"> <label>an</label> <name>Anthems</name> <level>standard</level> </value> <value type="concise"> <label>bd</label> <name>Ballads</name> <level>standard</level> </value> <!-- There are many, many, many more <value> elements within this <characterPosition> element -> </characterPosition> </characterPositions> My XSL-FO code for the table is: <xsl:template match="characterPositions" mode="header"> <fo:block space-before="2em"> <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="100em"/> <fo:table-body> <fo:table-row> <fo:table-cell> <fo:block font-weight="bold"> <xsl:text>Character Positions (008/18-34 and 006/01-17)</xsl:text> </fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table> <xsl:variable name="characterPositionCount" select="count(characterPosition) div 2+1"/> <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="27em"/> <fo:table-column column-width="60em"/> <fo:table-body> <fo:table-row> <fo:table-cell> <fo:block> <fo:table table-layout="fixed" width="40%"> <fo:table-column column-width="5em"/> <fo:table-column column-width="15em"/> <fo:table-column column-width="15em"/> <fo:table-column column-width="5em"/> <fo:table-body> <xsl:for-each select="characterPosition[position()<$characterPositionCount]"> <fo:table-row> <fo:table-cell> <fo:block text-align="left" margin-left="1em"> <xsl:value-of select="label"/> </fo:block> </fo:table-cell> <fo:table-cell> <fo:block text-align="left"> <xsl:value-of select="name"/> </fo:block> </fo:table-cell> </fo:table-row> <fo:table-row> <fo:table-cell> <xsl:for-each select="value"> <fo:block margin-left="3em"> <xsl:value-of select="label"/> </fo:block> </xsl:for-each> </fo:table-cell> <fo:table-cell> <xsl:for-each select="value"> <fo:block> <xsl:value-of select="name"/> </fo:block> </xsl:for-each> </fo:table-cell> </fo:table-row> </xsl:for-each> </fo:table-body> </fo:table> </fo:block> </fo:table-cell> <fo:table-cell> <fo:block> <fo:table table-layout="fixed" width="40%"> <fo:table-column column-width="5em"/> <fo:table-column column-width="15em"/> <fo:table-column column-width="15em"/> <fo:table-column column-width="5em"/> <fo:table-body> <xsl:for-each select="characterPosition[position()>$characterPositionCount]"> <fo:table-row> <fo:table-cell> <fo:block text-align="left" margin-left="1em"> <xsl:value-of select="label"/> </fo:block> </fo:table-cell> <fo:table-cell> <fo:block text-align="left"> <xsl:value-of select="name"/> </fo:block> </fo:table-cell> </fo:table-row> <fo:table-row> <fo:table-cell> <xsl:for-each select="value"> <fo:block margin-left="3em"> <xsl:value-of select="label"/> </fo:block> </xsl:for-each> </fo:table-cell> <fo:table-cell> <xsl:for-each select="value"> <fo:block> <xsl:value-of select="name"/> </fo:block> </xsl:for-each> </fo:table-cell> </fo:table-row> </xsl:for-each> </fo:table-body> </fo:table> </fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table> </fo:block> <fo:block> <fo:leader leader-length="100%" leader-pattern="rule" rule-style="solid" rule-thickness=".1mm" color="black"/> </fo:block> </xsl:template> As you can see, I am using: <xsl:variable name="characterPositionCount" select="count(characterPosition) div 2+1"/> to divide the data into two columns on the page. However, because of the great length of data within each <characterPosition> element (this is because of the amount of <value> elements below <characterPosition>), the list of <characterPosition><value> elements in the first column continues onto the next page, instead of streaming onto the second column first. Ideally, I would like the data to stream from one column to the other before breaking onto a new page (like "newspaper columns"). Do any of you have any idea what I can do to create this table? Thank you so very much for all of your help! Best wishes, Jackie Radebaugh Library of Congress Network Development & MARC Standards Office Washington, DC USA Phone: +1-202-707-1153 FAX: +1-202-707-0115 E-Mail: jrad@xxxxxxx
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|