Subject: RE: XSL to HTML table problem
From: "Roger Glover" <glover_roger@xxxxxxxxx>
Date: Wed, 29 Jan 2003 11:53:31 -0600
|
James [mailto:arcjah@xxxxxxxx] wrote:
> I have an xml document that looks like the following:
> <Dictionary>
> <WordDefinition>
> <Word>Some Word</Word>
> <Definition>First Definition</Definition>
> <Definition>Second Definition</Definition>
> <Definition>Third Definition</Definition>
> </WordDefinition>
> <WordDefinition>
> <Word>Second Word</Word>
> <Definition>First Definition</Definition>
> <Definition>Second Definition</Definition>
> </WordDefinition>
> </Dictionary>
>
> I have an xslt document that looks like the following:
o /
----X---------- <snip>
O \
> <xsl:for-each select="Dictionary/WordDefinition">
> <xsl:sort select="Word"/>
> <tr bgcolor="#99CCFF"><td><xsl:value-of
select="Word"/></td><td><br/></td></tr>
> <xsl:for-each select="Definition">
> <tr bgcolor="#99CCAA"><td><br/></td><td><xsl:value-of
select="."/></td></tr>
> </xsl:for-each>
> </xsl:for-each>
o /
----X---------- <snip>
O \
> (My problem is, I want the word and first definition on the same row.)
> The above xsl transforms the xml document into a html document
> that has the word on one row, in the first column and the
> defintions in the second, third and forth row in the second column.
>
> Again I want to figure out how to make the word and first
> definition sit on the same row.
>
> I've heard about indexing the elements but I've never seen any
> examples of this.
Try the following in place of the isolated portion above:
<xsl:for-each select="Dictionary/WordDefinition">
<xsl:sort select="Word"/>
<tr bgcolor="#99CCFF">
<td><xsl:value-of select="Word"/></td>
<td><xsl:value-of select="Definition[1]"/></td> <!-- first def -->
</tr>
<xsl:for-each select="Definition[position() > 1]"> <!-- later defs -->
<tr bgcolor="#99CCAA">
<td><br/></td>
<td><xsl:value-of select="."/></td>
</tr>
</xsl:for-each>
</xsl:for-each>
-- Roger Glover
glover_roger@xxxxxxxxx
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|