This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Maybe newbie...
- From: Jeni Tennison <jeni at jenitennison dot com>
- To: Antonio Fiol <fiol at w3ping dot com>
- Cc: XSL-List <XSL-List at lists dot mulberrytech dot com>
- Date: Fri, 17 May 2002 15:03:23 +0100
- Subject: Re: [xsl] Maybe newbie...
- Organization: Jeni Tennison Consulting Ltd
- References: <3CE508B3.9030809@w3ping.com>
- Reply-to: xsl-list at lists dot mulberrytech dot com
Hi Antonio,
> I think that using two nested for-each is quite dirty in my case, as
> a very similar effect could be achieved with a <xsl:for-each
> select="alarm/problemtype">.
>
> However, when using that one, position() is not 1, 2, 1, 2 but 1, 2,
> 3, 4, so the third line does not show the dates, where it should.
>
> I know I can substitute position by something else, but... what?
You could test whether the particular problemtype element has a
preceding sibling problemtype element; if it doesn't, then it's the
first within the particular alarm element:
<xsl:for-each select="alarm/problemtype">
<tr>
<xsl:choose>
<xsl:when test="preceding-sibling::problemtype">
<td></td><td></td>
</xsl:when>
<xsl:otherwise>
<td><xsl:value-of select="../@start" /></td>
<td><xsl:value-of select="../@end" /></td>
</xsl:otherwise>
</xsl:choose>
<td><xsl:value-of select="@qty" /></td>
<td><xsl:value-of select="@type" /></td>
</tr>
</xsl:for-each>
It doesn't save you much though; might even make the transformation
marginally slower (it's easier to check the position of the current
node than it is to check the preceding sibling of the current node, I
think).
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list