[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Creating Columnar Table format with XML data

Subject: Re: Creating Columnar Table format with XML data
From: Kenneth Stephen <marvin.the.cynical.robot@xxxxxxxxx>
Date: Sun, 14 Aug 2005 10:17:07 -0500
xml table format
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) &gt;
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@xxxxxxxxxxxxxx> 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.

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.