This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: XSL/XPath expression


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]