- From: Mike Haarman <mhaarman@infinitecampus.org>
- Date: Fri, 5 Sep 2003 15:16:45 -0500
- To: <www-xsl-fo@w3.org>
From: <michelleaiken-webboards9999@mailblocks.com>
> <xsl:apply-templates select="Contact" />
From your instance, you mean Customer here. Your Contact[sic] template always
begins a row. You want to define two columns for your table:
<fo:table-column column-width="8cm"/>
<fo:table-column column-width="8cm"/>
and call one template to build a row and fill one cell and another to populate
the adjacent cell. Apply templates on Customer like this:
<xsl:apply-templates select="Customer[position() mod 2 = 1]" mode="row"/>
which will fire this template:
<xsl:template match="Customer" mode="row">
<fo:table-row>
<fo:table-cell padding-start="4pt" text-align="left">
<fo:block>
<xsl:value-of select="@Name" />
</fo:block>
<xsl:apply-templates select="A1 | City | State | ZIP"/>
</fo:table-cell>
<xsl:apply-templates select="following-sibling::Customer[1]" mode="cell"/>
</fo:table-row>
</xsl:template>
As you can see, after building the cell, this template apply-templates the next
Customer in line to fill the next cell, firing this template:
<xsl:template match="Customer" mode="cell">
<fo:table-cell padding-start="4pt" text-align="left">
<fo:block>
<xsl:value-of select="@Name" />
</fo:block>
<xsl:apply-templates select="A1 | City | State | ZIP"/>
</fo:table-cell>
</xsl:template>
> I can't just add another column because I need to loop through all the
> contacts in the xml file, and the second column would be the same as
> the first, just different data.
Not sure what you mean by this. The above templates do what you say you want.
hth,
Mike
Received on Friday, 5 September 2003 16:17:26 UTC