Subject: RE: xsl structuring....
From: Ben Robb <Ben@xxxxxxxxxx>
Date: Tue, 3 Oct 2000 00:56:38 +0100
|
There is certainly a more elegant way than the one I've just hacked out;
however, it gives the correct answer, and given it is nearly one o'clock in
the morning, I'm going to call it a night at this:
The trick lies in getting a nodeset containing all of the required "name"
tags, and then using the "preceding" axis in XPath to do what a "DISTINCT"
statement in SQL does...
Hope this helps,
Ben
<table>
<xsl:for-each select="//name[../../desRow or ../../asRow]">
<xsl:sort select="text()"/>
<xsl:variable name="thisVal" select="text()"/>
<xsl:if test="not(../preceding::name = $thisVal)">
<tr>
<td><xsl:value-of select="text()"/></td>
<td><xsl:choose>
<xsl:when test="not(/History/des/desRow[name/text()
= $thisVal]/qty/text())">-</xsl:when>
<xsl:otherwise>
<xsl:value-of
select="/History/des/desRow[name/text() = $thisVal]/qty/text()"/>
</xsl:otherwise>
</xsl:choose>
</td>
<td><xsl:choose>
<xsl:when test="not(/History/asis/asRow[name/text()
= $thisVal]/qty/text())">-</xsl:when>
<xsl:otherwise>
<xsl:value-of
select="/History/asis/asRow[name/text() = $thisVal]/qty/text()"/>
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|