|
Subject: Re: [xsl] Column widths From: Gustaf Liljegren <gustafl@xxxxxxxxxx> Date: Sun, 23 Jun 2002 02:26:55 +0200 |
Mike Brown wrote:
>Brackets indicate predicates. Think of them as filters, providing everything
>to the left of them, for which everything inside them is true.
Got it.
Okay, here's a sample table:
<table>
<colgroup>
<col width="30%"/>
</colgroup>
<colgroup>
<col width="60%"/>
<col width="10%"/>
</colgroup>
<tbody>
<tr>
<th>A header</th>
<td>Some content here.</td>
<td>Some more here.</td>
</tr>
</tbody>
</table>
For now, I assume there will always be equal amounts of table cells in a
row as there are <col> elements. The result will look like this:
<fo:table>
<fo:table-body>
<fo:table-row>
<fo:table-cell width="30%">...</fo:table-cell>
<fo:table-cell width="60%">...</fo:table-cell>
<fo:table-cell width="10%">...</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
Here's how the <td> template looks like. The problem is in the long XPath
expressions:
<xsl:template match="td">
<xsl:variable name="x" select="position()"/>
<fo:table-cell xsl:use-attribute-sets="table-padding">
...
<xsl:if test="ancestor::table//col[$x]/attribute::width">
<xsl:attribute name="width">
<xsl:value-of select="ancestor::table//col[$x]/attribute::width"/>
</xsl:attribute>
</xsl:if>
<fo:block>
<xsl:apply-templates/>
</fo:block>
</fo:table-cell>
</xsl:template>
Gustaf
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Column widths, Mike Brown | Thread | Re: [xsl] Column widths, Joerg Heinicke |
| [xsl] String Manipulation, Joel Konkle-Parker | Date | Re: [xsl] String Manipulation, Gustaf Liljegren |
| Month |