Maria,
Example implementation :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns:exsl-common="http://exslt.org/common"
extension-element-prefixes="exsl-common">
<xsl:variable name="var">
<column title="Capital Markets">
<bullet ID="1">
<tip>This is the first tip for Capital
Markets.</tip>
</bullet>
<bullet ID="2">
<tip>This is the second tip for Capital
Markets</tip>
</bullet>
</column>
<column title="Environment Industry and Company Markets">
<bullet ID="3">
<tip>This is the first tip for Environment,
Industry and Company
Markets.</tip>
</bullet>
</column>
</xsl:variable>
<xsl:template match="/">
<xsl:variable name="input-data"
select="exsl-common:node-set($var)" />
<table>
<tr>
<xsl:apply-templates select="$input-data"
mode="titles" />
</tr>
<xsl:choose>
<xsl:when
test="count($input-data/column[1]/bullet) >
count($input-data/column[2]/bullet)">
<xsl:for-each
select="$input-data/column[1]/bullet">
<tr>
<td><xsl:apply-templates select="." /></td>
<xsl:variable
name="current-pos"
select="count(preceding-sibling::bullet) + 1" />
<td><xsl:apply-templates
select="$input-data/column[2]/bullet[$current-pos]" /></td>
</tr>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each
select="$input-data/column[2]/bullet">
<tr>
<td><xsl:apply-templates select="." /></td>
<xsl:variable
name="current-pos"
select="count(preceding-sibling::bullet) + 1" />
<td><xsl:apply-templates
select="$input-data/column[1]/bullet[$current-pos]" /></td>
</tr>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</table>
</xsl:template>
<xsl:template match="column" mode="titles">
<td><xsl:value-of select="@title" /></td>
</xsl:template>
</xsl:stylesheet>
In your case, you are probably using a separate input file for
your data, you wont need to use the node-set functions like I have.
Regards,
Kenneth
On 8/13/05, Maria Leggett <maria(_at_)idwebworks(_dot_)com> wrote:
I have an xml file that I need to create into a columnar table format. I
can't figure out how to group the data to display in a column when not all
the column rows cells will contain data. I am using XSL 1.0
sample xml is:
<column title="Capital Markets">
<bullet ID="1">
<tip>This is the first tip for Capital Markets.</tip>
</bullet>
<bullet ID="2">
<tip>This is the second tip for Capital Markets</tip>
</bullet>
</column>
<column title="Environment Industry and Company Markets">
<bullet ID="3">
<tip>This is the first tip for Environment, Industry and Company
Markets.</tip>
</bullet>
</column>
The html output should look something like this:
<table>
<tr>
<td>Capital Markets</td>
<td>Environment, Industry and Company Markets</td>
</tr>
<tr>
<td>This is the first tip for Capital Markets</td>
<td>This is the first tip for Environment, Industry and Company Markets</td>
</tr>
<tr>
<td>This is the second tip for Capital Markets</td>
<td></td>
</tr>
</table>
Thank you for any help.
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--