This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Need help with xsl:for-each and xsl:value-of
- From: "Williams, Chris D." <WILLIC10 at mail dot northgrum dot com>
- To: "'XSL-List at lists dot mulberrytech dot com'" <XSL-List at lists dot mulberrytech dot com>
- Date: Wed, 20 Mar 2002 13:02:22 -0800
- Subject: [xsl] Need help with xsl:for-each and xsl:value-of
- Reply-to: xsl-list at lists dot mulberrytech dot com
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