This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: XSL/XPath expression
- To: xsl-list at lists dot mulberrytech dot com
- Subject: Re: [xsl] XSL/XPath expression
- From: Oliver Becker <obecker at informatik dot hu-berlin dot de>
- Date: Wed, 16 May 2001 14:07:08 +0200 (MET DST)
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hi Magnus
> To match only the 1st Element element with Type="2" when in the ElementList
> context node I could write:
>
> <xsl:if test="Element[@Type='2'][position()=1]">
> do something
> </xsl:if>
>
> This seems to be working. What I really want to do, however, is to have this
> test inside the Element context node, but I have no clue how to express
> this:
>
> <xsl:template match="ElementList">
> <xsl:apply-templates select="Element"/>
> </xsl:template>
> <xsl:template match="Element">
> <xsl:if test="???[@Type='2'][position()=1]">
> do something
> </xsl:if>
> </xsl:template>
The simples solution is probably to put the predicate into the
select expression of xsl:apply-templates:
<xsl:template match="ElementList">
<xsl:apply-templates select="Element[@Type=2][1]" />
</xsl:template>
or into the pattern
<xsl:template match="Element[@Type=2][1]">
If you can't or want do that, check the preceding siblings:
<xsl:template match="Element">
<xsl:if test="@Type=2 and not(preceding-sibling::Element[@Type=2])">
...
Lots of possibilities.
Cheers,
Oliver
/-------------------------------------------------------------------\
| ob|do Dipl.Inf. Oliver Becker |
| --+-- E-Mail: obecker@informatik.hu-berlin.de |
| op|qo WWW: http://www.informatik.hu-berlin.de/~obecker |
\-------------------------------------------------------------------/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list