Re: [xsl] XSL/XPath expression

Subject: Re: [xsl] XSL/XPath expression
From: Oliver Becker <obecker@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 16 May 2001 14:07:08 +0200 (MET DST)
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@xxxxxxxxxxxxxxxxxxxxxxx             |
|  op|qo        WWW:    http://www.informatik.hu-berlin.de/~obecker |
\-------------------------------------------------------------------/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread