This is the mail archive of the xsl-list@mulberrytech.com mailing list .
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
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
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |