This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Need help with xsl:for-each and xsl:value-of
- From: "Joerg Heinicke" <joerg dot heinicke at gmx dot de>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Wed, 20 Mar 2002 23:06:48 +0100
- Subject: Re: [xsl] Need help with xsl:for-each and xsl:value-of
- References: <BB9F9DF39187D111847A00805FFEE025078CE3B8@XCGFL003>
- Reply-to: xsl-list at lists dot mulberrytech dot com
Hello Chris,
using disable-output-escaping is the completely wrong. Please look here for
more information: http://www.dpawson.co.uk/xsl/sect2/N2215.html.
Why aren't you creating the table on element test?
And a second hint: why not using templates? In general I prefer templates
instead of for-each.
http://www.dpawson.co.uk/xsl/sect2/N7654.html
Every thing about XSLT: http://www.dpawson.co.uk/xsl/sect2/sect21.html.
<xsl:template match="test">
<table>
<thead>
<tr>
<td>att1</td>
<td>att2</td>
</tr>
</thead>
<tbody>
<xsl:apply-templates select="item"/>
</tbody>
</table>
</xsl:template>
<xsl:template match="item">
<tr>
<td>
<xsl:value-of select="@att1"/>
<xsl:if test="not(@att1)">default</xsl:if>
</td>
<td>
<xsl:value-of select="@att2"/>
<xsl:if test="not(@att2)">default</xsl:if>
</td>
</tr>
</xsl:template>
Regards,
Joerg
> I have a simple table I am trying to create. Here is the sample XML file.
>
> <?xml version="1.0" encoding="UTF-8"?>
> <test>
> <item att1="foo1" att2="bar1"/>
> <item att2="bar2"/>
> <item att1="foo3"/>
> <item/>
> <item att1="foo5" att2="bar5"/>
> </test>
>
> I am currently using XMLSpy to create a XSL file to create my HTML table.
> It does create a basic table but not exaclty what I want. Right now, if
> either att1 or att2 if not set, nothing gets placed in the table cell.
What
> I would like to do it do a test of that value to see if it is defined and
if
> not, place some other fixed value there. I have tried adding various if
> conditions without any success. Can this be done?? Should I use some
other
> command other that xsl:for-each? Here is the stylesheet it is generating.
>
> Thanks
> Chris
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:xs="http://www.w3.org/2001/XMLSchema">
> <xsl:template match="/">
> <html>
> <head />
> <body>
> <xsl:for-each select="test">
> <xsl:for-each select="item">
> <xsl:if test="position()=1">
> <xsl:text disable-output-escaping="yes"><table
> border="1"></xsl:text>
> </xsl:if>
> <xsl:if test="position()=1">
> <thead>
> <tr>
> <td>att1</td>
> <td>att2</td>
> </tr>
> </thead>
> </xsl:if>
> <xsl:if test="position()=1">
> <xsl:text
> disable-output-escaping="yes"><tbody></xsl:text>
> </xsl:if>
> <tr>
> <td>
> <xsl:for-each select="@att1">
> <xsl:value-of select="." />
> </xsl:for-each>
> </td>
> <td>
> <xsl:for-each select="@att2">
> <xsl:value-of select="." />
> </xsl:for-each>
> </td>
> </tr>
> <xsl:if test="position()=last()">
> <xsl:text
> disable-output-escaping="yes"></tbody></xsl:text>
> </xsl:if>
> <xsl:if test="position()=last()">
> <xsl:text
> disable-output-escaping="yes"></table></xsl:text>
> </xsl:if>
> </xsl:for-each>
> </xsl:for-each>
> </body>
> </html>
> </xsl:template>
> </xsl:stylesheet>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list