Not entirely true..
You can always use the position() function, but it depends on the
context list, what it actually returns. The context list corresponds
more or less to the last issued for-each's select statement or
apply-templates's select statement. Both select's return a node set,
which is ordered according to supplied sort instructions or in document
order by default. That is used as context list.
What you need to do here to be able to use it, is to integrate your
*outer* if statement with the for-each select statement. As mentioned
before, you can add a predicate to your xpath. Inside the loop, you can
do stuff like:
<xsl:for-each select="a/b/[EMAIL PROTECTED] = '']">
<xsl:if test="position() = 1">
..
</xsl:if>
<xsl:if test="position() = last()">
..
</xsl:if>
<xsl:if test="not(position() = last())">
..
</xsl:if>
</xsl:for-each>
You can also use the position() outside a for-each, but might appear to
be confusing for others. By just looking at one template, you cannot say
for sure whether comments and text nodes (like white-space) are counted
as well or not.
Cheers,
Geert
> If you move your inner if-test into another template called
> with an apply-templates or call-template, you will be able to
> use the position() function.
>
>
Drs. G.P.H. Josten
Consultant
Daidalos BV
Source of Innovation
Hoekeindsehof 1-4
2665 JZ Bleiswijk
Tel.: +31 (0) 10 850 1200
Fax: +31 (0) 10 850 1199
www.daidalos.nl
De informatie - verzonden in of met dit emailbericht - is afkomstig van
Daidalos BV en is uitsluitend bestemd voor de geadresseerde. Indien u dit
bericht onbedoeld hebt ontvangen, verzoeken wij u het te verwijderen. Aan dit
bericht kunnen geen rechten worden ontleend.
>
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, June 28, 2006 3:31 AM
> To: [email protected]
> Subject: Urgent :break statement in xsl
>
>
>
>
>
> Hi All,
>
> I am facing a problem in xsl.I am not sure whether it
> is possible in xsl or not.
>
>
> I have a <xsl:for-each> loop .I have a check
> condition in it.I want it to do something for the first time
> check condition is satisfied.After that it should not do
> anything.As i have a check condition in the loop i could not
> put [position=1] in the <xsl:for-each> loop.I tried with
> declaring a variable
> and decreamenting its value if the check condition is
> satisfied.But it is not happening.
>
> Basically i want to break the <xsl:for-each>loop if
> one condition is satisfied. Below is the code.
>
>
> <xsl:variable name="daslcatagorypath" select="'/nos'"/>
> <xsl:for-each select="details/dasl:query-result/dasl:resource">
>
>
> <xsl:if test="d:resourcetype=''">
> <xsl:variable name="daslfolderpath"><xsl:value-of
> select="@dasl:path"/></xsl:variable>
> <xsl:variable name="check"
> select="substring-after($daslfolderpath,$daslcatagorypath)"/>
> <xsl:if test="$check!='' and $counter='1'">
> <xsl:variable name="size"
> select="d:getcontentlength"/>
> <xsl:variable name="kb-size" select="($size
> div 1000) - ($size mod 1000 div 1000)"/>
> <xsl:value-of select="$kb-size"/><xsl:text>
> </xsl:text>KB
> <xsl:variable name="counter" select="'0'"/>
> </xsl:if>
> </xsl:if>
> </xsl:for-each>
>
>
> Can anyone suggest me the solution for it.
> Thanks
> Regards,
> Deepak Kumar Sahoo
> Tata Consultancy Services Limited
> Mailto: [EMAIL PROTECTED]
> Website: http://www.tcs.com
> ForwardSourceID:NT0000922A
> =====-----=====-----=====
> Notice: The information contained in this e-mail
> message and/or attachments to it may contain
> confidential or privileged information. If you are
> not the intended recipient, any dissemination, use,
> review, distribution, printing or copying of the
> information contained in this e-mail message
> and/or attachments to it are strictly prohibited. If
> you have received this communication in error,
> please notify us by reply e-mail or telephone and
> immediately and permanently delete the message
> and any attachments. Thank you
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]